![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Возвращаясь к поиску по нескольким полям сразу... [D5, IB5.x]
Alexsys © (2002-07-29 20:36:00)Я уже спрашивал про это. И вот дошел до момента истины.
Вот код:
keyfields:="name;name_1;n_dom;n_kw";
keyvalues:=VarArrayOf([combobox1.Text, combobox2.Text, edit2.Text, edit3.text]);
if dmod.qrfiz.Locate(keyfields,keyvalues,[])=false then dmod.qrfiz.Locate("id",id1,[]);На прогоне выдает:
Operation not applicable
Что за ошибка такая? По одному полю поиск идет нормально.
Может, я пишу что не так? Помогите, пожалуйста...
Johnmen (2002-07-31 10:06:00) [1]Проблема в объявлении keyvalues.
Напиши так (это железно):
if not dmod.qrfiz.Locate(keyfields,VarArrayOf([combobox1.Text, combobox2.Text, edit2.Text, edit3.text]),[]) then dmod.qrfiz.Locate("id",id1,[]);
ЮЮ (2002-07-31 02:48:00) [2]Построить дополнительный запрос и не мучиться, а Locate делать по ключевому полю. Это, кстати, позволит показать в каком-либо Gride несколько записей, одновременно удовлетворяющим критерию поиска. А Locate непосредственно в запросе кроме первой записи другие "не покажет"
Alexsys (2002-07-30 19:03:00) [3]Кстати, у меня количество записей уже перевалило за 6000.
Межет быть проблема в этом? А тогда как решать?
Alexsys (2002-07-30 18:53:00) [4]Все именно так как и написал...
keyfields:="name;name_1;n_dom;n_kw";
keyvalues:=VarArrayOf([combobox1.Text, combobox2.Text, edit2.Text, edit3.text]);
if dmod.qrfiz.Locate(keyfields,keyvalues,[])=false then dmod.qrfiz.Locate("id",id1,[]);
На прогоне выдает:
Operation not applicable
Может знаете, что это за сообщение?
А все типы совпадают, потому что с одним полем все получается ОК (перебирал по очереди).
Johnmen (2002-07-30 09:16:00) [5]Если тип id1 соответствующий и все указанные поля существуют и размер combobox1.Text, combobox2.Text, edit2.Text, edit3.text не превышает размерности соотв.полей, то
ты чего-то недоговариваешь...
Jeer (2002-07-29 22:09:00) [6]Вообще-то и так достаточно
if (not *.Locate) then ..