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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
14-1086429522
Cardinal
2004-06-05 13:58
2004.06.27
Аксиома измерения площадей отдыхает (задачка)


1-1086848233
Globoor
2004-06-10 10:17
2004.06.27
ComboBox


14-1086462610
Девушка
2004-06-05 23:10
2004.06.27
Модераторы, удалите уже Ну как вам такое ? (Undert 05.06.04 23:0


14-1086869298
Empleado
2004-06-10 16:08
2004.06.27
Куда мы идем, люди?


14-1087020424
YurikGL
2004-06-12 10:07
2004.06.27
На пиратских копиях Windows XP не установится Service Pack 2