Главная страница
    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.006 c
3-49861
Борис
2002-04-17 12:14
2002.05.16
Почему этот код ну очень медленно выполняется?


14-50114
Potok
2002-04-02 04:31
2002.05.16
А нужно ли?


14-50088
Alexander Vasjuk
2002-04-05 10:19
2002.05.16
Дельфы, вспомни имя свое (продолжение)


1-49948
ymin
2002-04-30 16:11
2002.05.16
Запустил программу...


3-49847
MagG0T
2002-04-18 18:11
2002.05.16
Изменение DataSet QRDBText a





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский