Главная страница
    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
1-8014
Vitaly Krin
2002-09-21 17:58
2002.10.03
Как из типа Real в тип Integer, подскажите


4-8234
Stany
2002-08-17 15:32
2002.10.03
Заколебавший ListView


14-8166
Сергей Чурсин
2002-09-05 13:02
2002.10.03
Программирование для мобилок ? -это перспективно ?


14-8159
VictorT
2002-09-09 16:01
2002.10.03
Лотерея


14-8172
Vitaly
2002-09-09 16:46
2002.10.03
Нужен exe-паковщик/распаковщик





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