![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание вычисляемого поля базы.
Maloy © (2002-04-18 13:06:00)Ну помогите кто-нибудь.
Мне необходимо создатьть я думаю вычисляемое поле.
База имеет для примера следующую структуру:
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 Сидоров, Иванов, Петров
....
Val (2002-04-18 14:10:00) [1]ну так оно скорее Foolish..
Lusha (2002-04-18 13:45:00) [2]>Val © (18.04.02 13:41)
Смотри Johnmen © (18.04.02 13:28)... :)
Val (2002-04-18 13:43:00) [3]Совсем что-то плохо с сайтом, или это у меня? :(
Maloy (2002-04-18 13:42:00) [4]Спасибо Lusha! Счас попробую!
Может еще будут предложения :-)
Johnmen (2002-04-18 13:42:00) [5]>Maloy : Только подумай о скоростях.....:)
Если ты такой упертый, то др.вариант кр.Lusha © (18.04.02 13:36) нет....
Val (2002-04-18 13:41:00) [6]>Lusha © (18.04.02 13:36)
поле какое-то у вас ругательное, за что так не взлюбили? ;)
Val (2002-04-18 13:39:00) [7]если так уж охота сотворить такое чудо, то нужно выбрать их из соотв. таблицы по соотв. ID, пробежаться по полученному набору данных, вытаскивая фамилии и "склеивая" их в одну строчку и засунуть эту строчку в свое поле. как вариант.
Lusha (2002-04-18 13:36:00) [8]Значит самому лень... надо обязательно дядек побеспокоить... :)
Ну, лови...
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. КОД НЕ ПРОВЕРЕН...
Maloy (2002-04-18 13:33:00) [9]Я это прекрасно пониманию, в этом то и проблема.
Необходимо место на форме и не только.
В общем неоходимо создать вычисляемое поле, какое показал: CALC_SOSDAT...
Johnmen (2002-04-18 13:28:00) [10]Это так не делается - еще вчера было сказано...
Тебе необходимо показать список названий в гриде1, а список соответствующих создателей - в гриде2.
причем грид1 показывает НД Master , а грид2 - Detail.
Maloy (2002-04-18 13:14:00) [11]А вы поконкретнее, а то слишком образно... ;-)
gek (2002-04-18 13:09:00) [12]Гте-то я все уже это видел.
По-моему не давече чем вчера, только вот ник другой был.
Тебе же ответили несколько раз, что еще непонятно ?