Главная страница
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.024 c
3-1086070354
Sergey
2004-06-01 10:12
2004.06.27
поиск


3-1086286568
hardclubber
2004-06-03 22:16
2004.06.27
Автоинкримент в IB


3-1085978472
evgen
2004-05-31 08:41
2004.06.27
Как посмотреть список полей в БД


1-1087125792
TechnoDreamer
2004-06-13 15:23
2004.06.27
Edit для времени


3-1086152913
korvin
2004-06-02 09:08
2004.06.27
Заказ имени поля в результате запроса