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

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

Подскажите как организовать поиск [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' не нормально?


Наверх

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