Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание вычисляемого поля базы.


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]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо