![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите как организовать поиск [D6, D7, dBase, FoxPro]
ceval © (2004-06-04 20:26:00)Добрый вечер всем !
Подскажите как организовать поиск по 2 полям
что бы можно было одно поле оставить пустым
т.е например :
поля X Z
значен. гмил 566
788
гмил 967
в поле Х нет значения
Использую код :
ADOTable1.Locate('X;Z',VarArrayOf ([edit1.Text,Edit2.text]),[lopartialkey])...
если ввожу 'гмил' '566' --- все работает нормально
как сделать что бы про вводе ' ' '788' -- тоже работала нормальноЗарания благодарин !!!
P.s Прошу прощения за размытый вопрос
sniknik (2004-06-11 08:06:00) [1]ЮЮ © (11.06.04 02:54) [5]
получиш лишнее в первом варианте, '' тоже значение а ты его проигнорировал. и оно прекрасно ищется, но в вопросе у него строка из пробелов для поиска, и это может сработать но только если поле varchar и там действительно строка из стольких пробелов.
(в обшем ишется все, но только то что есть а не то что кажется там есть)
ЮЮ (2004-06-11 02:54:00) [2]if edit1.Text = '' then
ADOTable1.Locate('Z',Edit2.text,[lopartialkey])
else
ADOTable1.Locate('X;Z',VarArrayOf ([edit1.Text,Edit2.text]),[lopartialkey])
ilua (2004-06-11 02:38:00) [3]Попробуй так:напиши
Clientdataset1.FindKey([edit1.text;edit2.text]) то если у тебя индекс расчитан на два поля то он будет искать по двум полям,а если у тебя индекс расчитан на одно поле то он будет искать по одному полю;
Индекс нужно создать обязательно,можно при помощи метода:
Clientdataset1.AddIndex(....)
ceval (2004-06-07 13:02:00) [4]МНЕ нужен поиск по 2 полям
НО есть данные кртррые содержат только
одно поле
если а в вожу данные в два поля то все нормально работает
если одно поле оставляю пустым то не работает т е выдает сообщения что такой записи нет
Как написать что бы проверяло если данные в 2 полях поиск по 2 полям если введены данные в одно поле поиск по одному полю!
ilua (2004-06-07 04:49:00) [5]А зачем тебе это нужно.Если ты хотишь искать по одному полю ,можешь использовать следующие примеры (примеры были опробованы на Clientdataset):
1) Clientdataset1.findKey([edit1.text])
2)Clientdataset1.FindNearest([edit1.text])
но для этих двух методов нужно чтобы поле было прондексировано,это можно сделать при помощи функции:(Clientdataset1.AddIndex(......))
3)Clientdataset1.SetKey;
Clientdataset1.FieldByName('Имя поля').AsString:=edit1.text;
Clientdataset1.GotoKey; или вместо GotoKey используй GotoNearest;
4)Clientdataset1.SetRangStart;
Clientdataset1.FieldByName('Имя поля').AsString:=edit1.text;
Clientdataset1.SetRangEnd;
Clientdataset1.FieldByName('Имя поля').AsString:=edit2.text;
ClientDataSet1.ApplyRange;
5)Clientdataset1.EditRangStart;
Clientdataset1.FieldByName('Имя поля').AsString:=edit1.text;
Clientdataset1.EditRangEnd;
Clientdataset1.FieldByName('Имя поля').AsString:=edit2.text;
ClientDataSet1.ApplyRange;
6)Clientdataset1.EditKey;
Clientdataset1.FieldByName('Имя поля').AsString:=edit1.text;
ClientDataset1.GotoKey;
sniknik (2004-06-05 00:01:00) [6]а так '' '788' не нормально?