Форум: "Базы";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];
ВнизLoockUp поля Найти похожие ветки
← →
ORMADA © (2004-06-01 09:51) [0]Добрый ддень!
Делаю в рантайм лукап поля и столкнулся со следующим:
если квери (TADOQuery) создать в рантайм
т.е.
with TADOQuery.creat(self) do...
и потом назначить для LookupDataSet то дельфи ругается типа неправильно заданы значеня для лукап полей.
в тоже время если где то в public/private разделе объявить
Query1: TADOQuery; и потом созадать его
Query1 := TADOQuery.Create(self);
with Query1 do..
то всё отлично работает...
Можно ли как-нить этого избежать ? т.е. избежать объявления всех переменных типа квери кот. могут быть понадобиться (т.к. в моей программе их кол-во на этапе проектирования и разработки неизвестно).
← →
Anatoly Podgoretsky © (2004-06-01 10:00) [1]ошибка внутри with
← →
ORMADA © (2004-06-01 10:04) [2]2 Anatoly Podgoretsky
Анатолий! С чего вы это решили ?
with TADOQuery.Create(self) do
begin //--- Создаём новый ADOQuery для LoockUp поля ---begin------
Name := "TADOQuery10";
Connection := ADOConnection1;
SQL.Add("select * from спр1");
Open;
end; //--- Создаём новый ADOQuery для LoockUp поля ---end---------
затем
with TStringField.Create(ADOQuery1) do
begin
FieldKind := fkLookup;
FieldName := "LoockUp1";
DataSet := ADOQuery1;
Name := "LoockUp1";
KeyFields := "СсылкаНаСпр1";
LookupKeyFields := "Код";
LookupResultField := "Имя";
LookupDataSet :=TADOQuery(FindComponent("TADOQuery10"));
ADOQuery1.FieldDefs.Add(name, ftString, 50);
end;
В чём ошибка ?
← →
ORMADA © (2004-06-01 10:54) [3]Люююдиии! Хде вы ?
Никто с таким не сталкивался ?
← →
sniknik © (2004-06-01 11:41) [4]проверь значение LookupDataSet после присвоения.
← →
Vlad © (2004-06-01 12:01) [5]
> with TStringField.Create(ADOQuery1) do
...
затем
> FindComponent("TADOQuery10");
Это тоже самое что написать StringField.FindComponent("TADOQuery10")
Ку ?
← →
ORMADA © (2004-06-01 12:09) [6]дык лукап поля я тож создаю в рантайме
нееее это не тож самое, там я создаю динамо лукап поле предварительно создав динам квери и в свойство лукап поля для значений заношу имя квери из которого их надо брать.
Иль я неправильно тя понял ?
← →
Vlad © (2004-06-01 12:20) [7]
> ORMADA © (01.06.04 12:09) [6]
Ты создаешь ADOQuery, у которого owner - self (то есть наверняка - форма)
Затем пытаешься найти его в списке дочерних компонент StringField
Об этом говорит конструкция:
with TStringField.Create(ADOQuery1) do
...
... FindComponent("TADOQuery10");
То есть тоже самое что так: StringField.FindComponent("TADOQuery10")
тогда уж указывай явно: Self.FindComponent("TADOQuery10");
Хотя возможно проблема и не в этом.
← →
V-A-V (2004-06-01 12:23) [8]Слушай а зачем их извращатся в рантайме создавать, может просто в дизайнтайме их сразу нашлепать...
← →
ORMADA © (2004-06-01 12:30) [9]2 V-A-V панятна что можно но это родительская универсальная форма дл всех справочников от которой потом будет происходить наследование! во
← →
ORMADA © (2004-06-01 12:37) [10]2 Vlad СПАСИБА!
Влад ты оказался прав косяк был действительно в Self.FindComponent("TADOQuery10");
Он(с моей помощью канечна) просто не там искал компонент.
Всем СПАСИБО!
← →
Vlad © (2004-06-01 12:42) [11]
> ORMADA © (01.06.04 12:37) [10]
Значит АП был прав - ошибка внутри with :-)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.03 c