Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.019 c
6-8104
kostik78ua
2002-07-31 14:53
2002.10.03
NMStrm+клиент/сервер


3-7811
LEgO-2
2002-09-12 00:33
2002.10.03
Пароли к БД


1-7993
Алина
2002-09-20 19:39
2002.10.03
Удалить двойные файлы


1-7922
Ahmad
2002-09-17 13:14
2002.10.03
RichEdit-что это такое?


1-7963
Бильврёст
2002-09-24 10:11
2002.10.03
Проблемы с рекурсией и возвратом управления в нужную точку.




   Наверх