Помощь - Поиск - Пользователи - Календарь
Полная версия: поиск по нескольким полям
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
corazon
в нете везде по этоу вопросу лежит:

Код
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,[]);


как объявить keyfields и keyvalues? и что делать если я не знаю сколько полей для поиска у меня будет заполнено..
мисс_граффити
у тебя именно БД или ты так называешь типизированные файлы?
corazon
у меня именно БД
там получается DataModule2.Table1.Locate....
volvo
Цитата
как объявить keyfields и keyvalues?

keyfields: string;
keyvalues: variant;

если ты об этом...
corazon
да это, спасибо... но у меня это все равно не сработало =(

не знаю как сделать...
у меня есть пять полей (улица, площадь, номер этажа, кол-во этажей и стоимость), могут заполнить только некоторые из них и мне нада сделать поиск только по заполненым полям..
пыталась с query сделать..
Код

Query1.SQL.Clear;
Query1.Active:=false;
Query1.SQL.Add('select * from sprav');
Query1.SQL.Add('where Opisanie like "%" ');
if Edit2.Text<>'' then Query1.SQL.Add('AND Ulica="'+edit2.text+'"');
if Edit3.Text<>'' then Query1.SQL.Add('AND Ploshad="'+edit3.text+'"');
if Edit4.Text<>'' then Query1.SQL.Add('AND Etaz='+edit4.text);
if Edit5.Text<>'' then Query1.SQL.Add('AND Kol_et="'+edit5.text+'"');
if Edit5.Text<>'' then Query1.SQL.Add('AND Cena="'+edit6.text+'"');
Query1.SQL.Add(';');
Query1.ExecSQL;
Query1.Active:=true;


тож не помогло.. потому что поля в таблице числа,а ищу строку =(
что можно исправить?
volvo
Там, где значения строчные кавычки оставь, а там, где числовые - убери...
corazon
спасиба! работает =) и что я тупила так >_<
Lexp1
Цитата(corazon @ 19.06.2007 16:15) *

спасиба! работает =) и что я тупила так >_<


Огромное вам всем спасибо! Тоже долго голову ломал. Реальна тема.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.