Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];

Вниз

Поиск записи.   Найти похожие ветки 

 
Geoji   (2004-09-15 10:10) [0]

День добрый! Подскажите, пожалуйста, что нужно для того, чтобы производился поиск не только первой записи, а и следующей идентичной. Например, у меня находит фамилию "Иванов", но ниже есть еще "Иванов", которую поиск уже не осуществляет.
Что мне нужно изменить?

   case RadioGroup1.ItemIndex of
   0:strField:="FAM";
   1:strField:="DOTAR";
   end;
   Query1.Locate(strField, Edit1.Text, [loCaseInsensitive]);

Спасибо всем!


 
Geoji   (2004-09-15 10:33) [1]

Я думаю, это не сложный вопрос, но почему-то никто ничего не может черкнуть.


 
Sergey13 ©   (2004-09-15 10:34) [2]

Можно вместо локате фильтровать и циклом бегать по результату.


 
Geoji   (2004-09-15 10:40) [3]

[2]
Но если фильтровать, все остальные записи будут не видны, только, к примеру "Иванов", а мне нужно чтобы и "Петров" был в "сетке". Как в простом поиске текстового документа, - нашел первую запись, дальше следущую и т. д.


 
Sergey13 ©   (2004-09-15 10:45) [4]

Поставть ЕхЛиб-овский грид. Там это реализовано.


 
Geoji   (2004-09-15 10:51) [5]

[4]
А где этот грид находится, подскажи, я не сталкивался с этим.


 
Sergey13 ©   (2004-09-15 10:52) [6]

http://www.ehlib.com/RUS/default.htm


 
Geoji   (2004-09-15 10:55) [7]

[6]
Спасибо!!!


 
сергей1   (2004-09-15 19:46) [8]

да можно и обычным гридом обойтись, кидай на форму помимо твоего грида пару query, кнопку и edit для

вписывания в него слова "Иванов" (и не только :)

пиши для всего этого хозяйства следующий код

var s_name:string;

procedure TForm1.Button1Click(Sender: TObject);
var v:string;
begin
v:=form1.ADOQuery2.FieldByName("ind").AsString;
form1.ADOQuery1.Locate("ind; text",VarArrayOf([v,s_name]),[loPartialKey]);
if not form1.ADOQuery2.Eof  then form1.ADOQuery2.Next else showmessage("нету больше !");
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
s_name:=form1.edit1.text;
end;

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
if key=13 then
begin
 form1.ADOQuery2.SQL.Text:="select ind from Table1 where text = "+quotedstr(form1.Edit1.Text);
 form1.ADOQuery2.Open;
 form1.ADOQuery2.First;
end;
end;

здесь в моей таблице поле "ind" - primary key для таблицы, поле "text" - то поле, где ищем твоего Иванова.

Зацепил идею ?

Пишем в едитбокс искомое слово, нажимаем enter - в query2 закачиваются все значения ключевого поля, в

строке которого поле "text"= form1.Edit1.Text. Теперь при каждом нажатии кнопки мы будем переходить к

нужному полю, пока они присутствуют в таблице.

у меня все это работает, хотя разумеется, до раб. варианта тут далековато

Возможно в эхлибе с этим проще работать, только есть такое мнение (которое уже проскакивало в форуме), что

использование левых компонентов в рабочих проектах не есть хорошо.


 
Zacho ©   (2004-09-15 20:26) [9]

Давно не пользуюсь BDE, но если не запямятовал - то самое простое RTFM TQuery.Filter, TDataSet.FindNext и т.п.

Или просто напиши свой аналог Locate, который будет начинать поиск с текущей записи, а не с начала НД. Ничего сложного, обычное сравнение в цикле.



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

Форум: "Базы";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.05 c
1-1096300351
fuzzy
2004-09-27 19:52
2004.10.10
Помогите с TMemo


4-1094711149
UNIVERSAL
2004-09-09 10:25
2004.10.10
Окно поверх всех окон - проблема(+)


9-1086872388
init13
2004-06-10 16:59
2004.10.10
ГЛСцена (текст)


6-1091398924
НовиЧок
2004-08-02 02:22
2004.10.10
Убить фрейм в WebBrowser e


1-1096024271
wisekaa
2004-09-24 15:11
2004.10.10
Работа с Project Group





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский