Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.16;
Скачать: CL | DM;

Вниз

Создание вычисляемого поля базы.   Найти похожие ветки 

 
Maloy   (2002-04-18 13:06) [0]

Ну помогите кто-нибудь.
Мне необходимо создатьть я думаю вычисляемое поле.
База имеет для примера следующую структуру:

ISDAN_TBL
ID - (счетчик) номер п/п
TITLE - название например издания (строка)

SOSDAT_TBL
ID - (счетчик)
NAM - (строка) - Фамилия

SOSDAT_ST_TBL
ID - (счетчик)
ID_ISDAN (номер издания)
ID_SOSDAT (номер создателя)

Т.е. SOSDAT_TBL (создатели) выступает в роли справочника фамилий.
ISDAN_TBL связана с SOSDAT_ST_TBL, т.е. к одному изданию относиться несколько создателей (один-ко-многим).

Так вот, мне неоходимо сделать какое-либо вычисляемое поле в таблице ISDAN_TBL которое бы отображало одной строкой всех создателей, относящихся к данному изданию.
Создавая поле Calculated испытываю проблемы. Помогите, пожалуйста.
Т.е в гриде чтобы отображалось приерно следующее:

ID | TITLE | CALC_SOSDAT
----------------------------------------
1 Название_1 Иванов, Петров
2 Название_2 Сидоров, Иванов, Петров
....


 
gek ©   (2002-04-18 13:09) [1]

Гте-то я все уже это видел.
По-моему не давече чем вчера, только вот ник другой был.
Тебе же ответили несколько раз, что еще непонятно ?


 
Maloy   (2002-04-18 13:14) [2]

А вы поконкретнее, а то слишком образно... ;-)


 
Johnmen ©   (2002-04-18 13:28) [3]

Это так не делается - еще вчера было сказано...
Тебе необходимо показать список названий в гриде1, а список соответствующих создателей - в гриде2.
причем грид1 показывает НД Master , а грид2 - Detail.


 
Maloy   (2002-04-18 13:33) [4]

Я это прекрасно пониманию, в этом то и проблема.
Необходимо место на форме и не только.
В общем неоходимо создать вычисляемое поле, какое показал: CALC_SOSDAT...


 
Lusha ©   (2002-04-18 13:36) [5]

Значит самому лень... надо обязательно дядек побеспокоить... :)
Ну, лови...

procedure TForm1.ISDAN_TBLCalcFields(DataSet : TDataSet);
begin
with TQuery.Create(Self) do
try
SQL.Text := Format("SELECT B.NAM FROM SOSDAT_ST_TBL A, SOSDAT_TBL B WHERE A.ID_SOSDAT = B.ID AND A.ID = %", [DataSet.FieldByName("ID").AsString]);
Open;
while not Eof do
begin
DataSet.FieldByName("FUCKING_CALC_FIELD").AsString := "";
if not Bof then
DataSet.FieldByName("FUCKING_CALC_FIELD").AsString := DataSet.FieldByName("FUCKING_CALC_FIELD").AsString + ",";
DataSet.FieldByName("FUCKING_CALC_FIELD").AsString := DataSet.FieldByName("FUCKING_CALC_FIELD").AsString + FieldByName("NAME").AsString;
Next;
end;
finally
Free;
end;
end;


P.S. КОД НЕ ПРОВЕРЕН...


 
Val ©   (2002-04-18 13:39) [6]

если так уж охота сотворить такое чудо, то нужно выбрать их из соотв. таблицы по соотв. ID, пробежаться по полученному набору данных, вытаскивая фамилии и "склеивая" их в одну строчку и засунуть эту строчку в свое поле. как вариант.


 
Val ©   (2002-04-18 13:41) [7]

>Lusha © (18.04.02 13:36)
поле какое-то у вас ругательное, за что так не взлюбили? ;)


 
Maloy   (2002-04-18 13:42) [8]

Спасибо Lusha! Счас попробую!
Может еще будут предложения :-)


 
Johnmen ©   (2002-04-18 13:42) [9]

>Maloy : Только подумай о скоростях.....:)
Если ты такой упертый, то др.вариант кр.Lusha © (18.04.02 13:36) нет....


 
Val ©   (2002-04-18 13:43) [10]

Совсем что-то плохо с сайтом, или это у меня? :(


 
Lusha ©   (2002-04-18 13:45) [11]

>Val © (18.04.02 13:41)
Смотри Johnmen © (18.04.02 13:28)... :)


 
Val ©   (2002-04-18 14:10) [12]

ну так оно скорее Foolish..



Страницы: 1 вся ветка

Текущий архив: 2002.05.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
4-50164
Velocity
2002-03-15 07:10
2002.05.16
PBS_SMOOTH - как использовать сию мессагу?


3-49839
Александр Арсентьев
2002-04-18 10:01
2002.05.16
InterBase


1-49985
AMQ
2002-04-26 10:31
2002.05.16
RegisterHotKey


3-49830
Pastor
2002-04-18 13:41
2002.05.16
FieldCount возвращает неверное значение :-(


4-50165
ebeden
2002-03-15 03:12
2002.05.16
Internet Explorer