Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.10.03;
Скачать: [xml.tar.bz2];

Вниз

Проблемы с добавлением поля синхронного просмотра в Run-Time   Найти похожие ветки 

 
B-Ars   (2002-09-11 12:17) [0]

Добрый день, господа! Требуется ваша помощь: ниже приведен код, с помощью которого я пытаюсь добавить Lookup поле в НД. Обстановка: 2 запроса (Query_AllData, Query_Prog), DBGrid натравлен на 1-й. Поля "PROG_KEY" 1-го запроса и "CAPTION" 2-го - ключи. Необходимо отобразить в поле "NAME" в гриде 1-го запроса. Только пожалуйста, не объясняйте как это делать в Design Time - это прекрасно работает, но мне не подходит. При исполнении этого кода компилятор выводит сообщение: "Query_AllData: Field "Программы" cannot be a calculated or lookup field", а затем про ошибку при операции с плавающей точкой в программе. Заранее спасибо.

Var
LookUp_ProgKey: TField;
begin
Query_AllData.Close;
LookUp_ProgKey:=TField.Create(Query_AllData);
With LookUp_ProgKey do
Begin
Name:="Query_AllData_LookUp_ProgKey";
FieldName:="LookUp_PROG_KEY";
DisplayLabel:="Программы";
Index:=1;
FieldKind:=fkLookUp;
Lookup:=True;
LookupCache:=False;
KeyFields:="PROG_KEY";
LookupDataSet:=DataSource_Prog.DataSet;
DataSet:=DataSource_AllData.DataSet;
LookupKeyFields:="CAPTION";
LookupResultField:="NAME";
Visible:=True;
End;
DBGrid.DataSource.DataSet.Fields.Add(LookUp_ProgKey);


 
Shaman_Naydak   (2002-09-11 13:19) [1]

Этта, не используй тип TField - он базовый..
Создавай наследника (TStringField, TNumericField и.т.п)
И еще, ты по-моему, лишние поля инициализируешь, не нужно оно


 
B-Ars   (2002-09-13 12:01) [2]

Да, спасибо, изменил тип на TStringField+надо добавить в Columns у грида ещё одну ячейку, только похоже действительно проблемка появилась. Дело в том, что при выполнении данного кода на строке с присвоением полю датасета (DataSet:=DataSource_AllData.DataSet) компилятор ругается: Cannot perform this operation on an open dataset. Если закрывать датасет, то программа не добавляет остальные поля автоматически, как она делала, когда я не добавлял ничего руками. Как-то странно, другие VCL компоненты позволяют менять датасет в run-time, а здесь почему-то не хочет. Как бы тут вывернуться? Руками добавлять все поля - не хотелось бы, я как раз пытаюсь уйти от этого...


 
REA   (2002-09-13 12:12) [3]

Т.е. я так понял ты хочешь все поля что есть автоматом добавить плюс еще часть своих вычисляемых? Там либо одно либо другое. Можно перед открытием обновить FieldDefs (забыл какой функцией) и добавить свои поля. В процессе работы уже не изменить.


 
B-Ars   (2002-09-13 12:25) [4]

Да, так мне и нужно сделать. Ну что же, видимо придется извращаться по другому. Спасибо!



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.10.03;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.007 c
6-8088
BlackSun
2002-08-02 15:01
2002.10.03
Отправка email, глючит ;(


4-8223
oduvan
2002-08-16 18:38
2002.10.03
Как лучшее всего удалить папку с файлами в корзину?


1-8033
Mazenrat
2002-09-20 15:18
2002.10.03
Активен ли таймер (SetTimer)?


14-8145
Alibaba
2002-09-04 10:24
2002.10.03
Поздравляю.


1-7936
kex86
2002-09-22 02:24
2002.10.03
---|Ветка была без названия|---





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