Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.03;
Скачать: CL | DM;

Вниз

Проблемы с добавлением поля синхронного просмотра в 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;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.006 c
1-8048
Shadow
2002-09-22 16:46
2002.10.03
Рисование


6-8108
DikobraZ
2002-08-01 16:07
2002.10.03
Параметры удаленного компа


3-7810
nick_vstu
2002-09-06 15:07
2002.10.03
Текущая запись в БД, но не RecNo


1-7898
Fishka
2002-09-18 14:04
2002.10.03
CheckListBox - принудительный скроллинг?


1-8024
kex86
2002-09-20 01:47
2002.10.03
Почему на 9910-ый проход циклом по этому коду система начинает





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