Форум: "Базы";
Текущий архив: 2002.05.16;
Скачать: [xml.tar.bz2];
ВнизСоздание вычисляемого поля базы. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c