Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-50036
Batiskaf
2002-04-29 12:38
2002.05.16
Hash table in Delphi5?


14-50112
Уставший
2002-04-04 20:27
2002.05.16
Всё к чертям!


1-49970
eSKey
2002-04-29 17:42
2002.05.16
И как это убрать?!


14-50106
anod
2002-04-06 00:12
2002.05.16
Подскажите


1-49904
Diablo III
2002-05-02 20:21
2002.05.16
TWebBrowser





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский