Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Field Not Found


Страницы:   1 2 3

Krants ©   (2007-08-28 17:00:00) 

Помогите разобраться с непонятной ошибкой, имеется поключение к базе(access) через пал-ру ADO, два связанных ADOQuery через TDataSource:
DS_Look.DataSet:=QueryLook;
QueryEdit.DataSource:=DS_Look;

при первичном запуске кода:  
QueryLook.Close;
QueryEdit.Close;

QueryLook.SQL.Clear;
QueryLook.SQL.Add('Select id, '+field);
QueryLook.SQL.Add('From table');
QueryLook.Open;

QueryEdit.SQL.Clear;
QueryEdit.SQL.Add('select id, MyField from table Where id>=:id');
QueryEdit.SQL.Add('AND '+field+'=:'+field);
QueryEdit.Open;

при заранее заданном field:='field1';
выполняется все великолепно!
но при вторичном запуске и измененным значением field:='field2';
происходит ошибка типа: "QueryLook: field 'field1' not found"

подскажите плз в чем может заключаться ошибка и как ее можно устранить?


Krants   (2007-08-29 18:05:00) [1]


> sniknik ©   (29.08.07 17:59) [48]

все задается, и великолепно работает, "активизировать" значит переопределить связи параметров квериедит с полями кверилук, и...

все, запипало, закрывайте тему. за критику не обижаюсь, очень благодарен.


sniknik   (2007-08-29 17:59:00) [2]

и кстати
> вот если поменять местами активацию квериков(см.[20]):
то
> после повторно "активизировать" связь:
не нужно, связь и так не задастся.


sniknik   (2007-08-29 17:54:00) [3]

> ты вот сначала обнули это строковое свойство
я это сделал в то время как проверял твой код, и если бы это не сработало то означало бы, что показанное мной это не все из спрятанных свойств что имеет влияние и нужно продолжать смотреть... -> пост бы не появился в то время а появился чуть позднее с указанием 2х или более связанных свойств.

> а в обр. случае никакой неправильной работы я не замечаю...
т.е. ты используешь мастер детайл, убираешь поля связи... и ни какой разницы в работе? -> ты не используешь мастер детайл, она тебе не нужна, убери связку и не парь никому мозги.


Krants   (2007-08-29 17:37:00) [4]


> sniknik ©   (29.08.07 17:26) [45]
давай не будем переходить на грубость... ты вот сначала обнули это строковое свойство, наход. в привате предка, более простым способом. А потом советуй.
а в случае [42], если переоткрытие оставлю в начале, то ни по какой логике код работать не будет, а в обр. случае никакой неправильной работы я не замечаю...


sniknik   (2007-08-29 17:26:00) [5]

> отож и оно! мет-и [6] и [42] попроще будет)
?????
пересоздание компонента или повторная активация рекордсетов проще "обнуления" единственного свойства? (присвоения пустой строки т.к. свойство строковое).
а потом (в случае [42]) будешь решат проблему неправильной работы связи, если как показано переоткрытие оставишь в конце, или только "тормоза", если перенесёшь в начало...
ты не из лагеря трудоголиков пишешь часом?


Krants   (2007-08-29 17:10:00) [6]


> sniknik ©   (29.08.07 16:37) [43]
но надеюсь убрать это "чего"

отож и оно! мет-и [6] и [42] попроще будет)


sniknik   (2007-08-29 16:37:00) [7]

Krants ©   (29.08.07 15:43) [42]
зачем рыться и чесать правое ухо левой ногой? в [36] дано прямое указание на простое решение. (в смысле там показано от чего, но надеюсь убрать это "чего" после того как нашли проблем не должно возникнуть...)


Krants   (2007-08-29 15:43:00) [8]


> clickmaker ©   (29.08.07 13:20) [41]

спасибо за совет, но вот пока рылся в паутине VCL, понял, что можно было понять и раньше... вот если поменять местами активацию квериков(см.[20]):
QueryEdit.SQL.Clear;
QueryEdit.SQL.Add('select id, Field3 from Table1 Where id>=:id');
QueryEdit.SQL.Add('AND '+field+'=:'+field);
QueryEdit.Open;

QueryLook.SQL.Clear;
QueryLook.SQL.Add('Select id, '+field);
QueryLook.SQL.Add('From Table1');
QueryLook.Open;

и после повторно "активизировать" связь:
QueryEdit.Open;
QueryEdit.Close;

то разумеется провисающие в небытие "связи" на поля сами и обновятся)

спасибо всем за советы.


clickmaker   (2007-08-29 13:20:00) [9]


> [34] Krants ©   (29.08.07 12:30)

во всех модулях VCL, где это есть, ставишь брякпоинты. Не забудь Project options - compiler - use debug dcu.
Запускаешь, когда словишь один из бряков, смотри call stack. Он тебя и выведет на зеленого человечка в твоем проекте


Reindeer Moss Eater   (2007-08-29 12:53:00) [10]

Ну я и имел ввиду реализацию адо


sniknik   (2007-08-29 12:51:00) [11]

Reindeer Moss Eater ©   (29.08.07 12:35) [37]
> Зеленые человечки - это ADO
не ADO а борланд, это он сделать 3 заведомо убогих компонента "под BDE", спрятав/убрав "лишнее".

в нормальных все видно.

Anatoly Podgoretsky ©   (29.08.07 12:39) [38]
> Из твоего dfm
необоснованная придирка, это же код пример "необходимый минимум" воспроизведения ошибки, мы сами хотели чтоб он такой предоставил.


Anatoly Podgoretsky   (2007-08-29 12:39:00) [12]

> Krants  (29.08.2007 12:14:27)  [27]

> и с чего ты взял что связь не используется?

Из твоего dfm


Reindeer Moss Eater   (2007-08-29 12:35:00) [13]

Зеленые человечки - это ADO

Description

Set DataSource to automatically fill parameters in a query with fields values from another dataset. Parameters that have the same name as fields in the other dataset are filled with the field values. Parameters with names that are not the same as fields in the other dataset do not automatically get values, and must be programmatically set. For example, if the SQL property of the TADOQuery contains the SQL statement below and the dataset referenced through DataSource has a CustNo field, the value from the current record in that other dataset is used in the CustNo parameter:


sniknik   (2007-08-29 12:34:00) [14]

Krants ©   (29.08.07 11:44) [20]
добавь
...
QueryEdit.Open;
Label1.Caption:= TADODataSet(QueryEdit).MasterFields;
end;

вот тебе и предопределённое поле (в [0] оно вроде в десигне устанавливалось, в 20 в коде, непринципиально),

вообще это больше относится к вопросу о правильности выбираемых компонент...


Krants   (2007-08-29 12:33:00) [15]


> Reindeer Moss Eater ©   (29.08.07 12:27) [33]
хорошо, не буду, толко не флуди больше пожалуйста!
хочешь ответить по вопросу ответь, сперва прочтя его, что-то неясно спроси, сперва еще раз вникнув в вопрос и в то что хочешь спросить.


Krants   (2007-08-29 12:30:00) [16]


> clickmaker ©   (29.08.07 11:59) [23]

этих SFieldNotFoundтам ништяк, можешь подсказать способ как можно отследить конкретную проц или функ. в которой возникает прерывание?


Reindeer Moss Eater   (2007-08-29 12:27:00) [17]

QueryDupl, -это из проги, из примера: QueryEdit

Еще раз для тех кто в танке: Не морочь людям голову!

Здесь люди првыкли искать ошибки в реальном коде, а не в вымышленном.


Krants   (2007-08-29 12:25:00) [18]


> Reindeer Moss Eater ©   (29.08.07 12:22) [29]
не обязательно в этой форме
вопрос логичный, ответ конкретный судя по коду в вопросе!
QueryDupl, -это из проги, из примера: QueryEdit


Reindeer Moss Eater   (2007-08-29 12:24:00) [19]

Иди в баню чувак.

Зачем ты кликмастеру сказал, что на эти запросы никто и нигде не ссылается? Если убийство QueryDupl якобы решает проблему?


Reindeer Moss Eater   (2007-08-29 12:22:00) [20]

А вообще чувак,
не морочь людям голову!

Krants ©   (29.08.07 11:53) [22]

> clickmaker ©   (29.08.07 11:51) [21]
> QueryLook или DS_Look кем-нибудь используется? (не обязательно
> в этой форме)
нет!

единственным, пока найденным, логичным решением является:
QueryDupl.Destroy;


В твоем приведенном коде нигде нету QueryDupl


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо