Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.11;
Скачать: CL | DM;

Вниз

Подскажите как организовать поиск   Найти похожие ветки 

 
ceval   (2004-06-04 20:26) [0]

Добрый вечер всем !
Подскажите как организовать поиск по 2 полям
что бы можно было одно поле оставить пустым
 т.е например :
поля           X             Z
значен.       гмил          566
                           788                
             гмил          967
в поле Х нет значения

Использую  код :
ADOTable1.Locate("X;Z",VarArrayOf ([edit1.Text,Edit2.text]),[lopartialkey])...
если ввожу "гмил"   "566" --- все работает нормально
как сделать что бы про вводе  "    "   "788" -- тоже работала нормально Зарания благодарин !!!
P.s Прошу прощения за размытый вопрос


 
sniknik ©   (2004-06-05 00:01) [1]

а так  ""   "788" не нормально?


 
ilua   (2004-06-07 04:49) [2]

А зачем тебе это нужно.Если ты хотишь искать по одному полю ,можешь использовать следующие примеры (примеры были опробованы на 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;


 
ceval   (2004-06-07 13:02) [3]

МНЕ нужен поиск по 2 полям
НО есть данные кртррые содержат только
одно поле
если а в вожу данные в два поля то все нормально работает
если одно поле оставляю пустым то не работает т е выдает сообщения что такой записи нет
Как написать что бы проверяло если данные в 2 полях поиск по 2 полям если введены данные в одно поле поиск по одному полю!


 
ilua   (2004-06-11 02:38) [4]

Попробуй так:напиши
Clientdataset1.FindKey([edit1.text;edit2.text]) то если у тебя индекс расчитан на два поля то он будет искать по двум полям,а если у тебя индекс расчитан на одно поле то он будет искать по одному полю;
Индекс нужно создать обязательно,можно при помощи метода:
Clientdataset1.AddIndex(....)


 
ЮЮ ©   (2004-06-11 02:54) [5]

if edit1.Text = "" then
 ADOTable1.Locate("Z",Edit2.text,[lopartialkey])
else
 ADOTable1.Locate("X;Z",VarArrayOf ([edit1.Text,Edit2.text]),[lopartialkey])


 
sniknik ©   (2004-06-11 08:06) [6]

ЮЮ ©   (11.06.04 02:54) [5]
получиш лишнее в первом варианте, "" тоже значение а ты его проигнорировал. и оно прекрасно ищется, но в вопросе у него строка из пробелов для поиска, и это может сработать но только если поле varchar и там действительно строка из стольких пробелов.
(в обшем ишется все, но только то что есть а не то что кажется там есть)



Страницы: 1 вся ветка

Текущий архив: 2004.07.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.04 c
3-1087051839
Sectey
2004-06-12 18:50
2004.07.11
Подключение к MS SQL через ADO


4-1086157047
Term
2004-06-02 10:17
2004.07.11
как получить список дисков в системе, С ,D и т.д. скоко их там ес


3-1087276044
query
2004-06-15 09:07
2004.07.11
1 234 567,000 -->>> 1234567


6-1084736475
_man
2004-05-16 23:41
2004.07.11
WOL


1-1088075871
Evg_fat
2004-06-24 15:17
2004.07.11
Переместить курсор