Форум: "Базы";
Текущий архив: 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.008 c