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

Вниз

Как грамотно организовать поиск в StringGrid   Найти похожие ветки 

 
[BAD]Angel   (2003-07-22 12:31) [0]

Мастера, помоги пожалуйста (кодом, либо алгоритмом), как граммотно организовать поиск в StringGrid"е?

Пример:

N ФИО Тип N карты
1 Иванов Иван Иванович Персональный 1234
2 Петров Петр Петрович ВСД 0042
3 Сиборов Сидр Сидорович Персональный 0036

Строки поиска на форме:

Фамилия: __________ Имя: _________ Отчество: ___________
Тип: ______________________________
N карты: __________________________

Мне надо, что бы я ввел в поиске, допустим: Фамилию и Тип, а мне прога должна записать в файл все, что нашла!

Пример 2:
Фамилия: Петров Имя: __________ Отчество: ________
Тип: __________________________
N карты: 00

результат, который должен быть:
2 Петров Петр Петрович ВСД 0042
3 Сиборов Сидр Сидорович Персональный 0036


Помогите, всю голову поломал! :(


 
Sandman25   (2003-07-22 12:36) [1]

Откуда берутся данные для грида?
Если из базы данных, то в ней и нужно искать (TQuery.SQL), а не в гриде.


 
[BAD]Angel   (2003-07-22 12:53) [2]

дело такое: данные берутся из файла, заносяться в StringGrid, а результат я хочу вывести в новый String.
Вот!


 
Sandman25   (2003-07-22 13:07) [3]


with StringGrid do
for R := 1 to RowCount - 1 do
if ((Length(EditFio.Text) = 0) or (Pos(EditFio.Text, Cells[2, R]) > 0))
and ((Length(EditCard.Text) = 0) or (Pos(EditCard.Text, Cells[4, R]) > 0))
then
...// добавление в другой грид


 
Sandman25   (2003-07-22 13:08) [4]

with StringGrid do
for R := 1 to RowCount - 1 do
if ((Length(EditFio.Text) = 0) or (Pos(EditFio.Text, Cells[2, R]) > 0))
and ((Length(EditCard.Text) = 0) or (Pos(EditCard.Text, Cells[4, R]) = 1))
then
...// добавление в другой грид


 
[BAD]Angel   (2003-07-22 13:16) [5]

Не, погоди...

У меня 5 полей для поиска!
Фамилия
Имя
Отчество
Тип
Номер карты

Мне надо сделать поиск отдельно по ФАМИЛИИ ИМЕНИ ОТЧЕСТВУ, не связывая их вместе.

Я делаю так:

if Family.Text<>"" then begin
for i:=0 to form1.cards_owner.RowCount-1 do begin
e1:=copy(form1.cards_owner.cells[1,i], 1, length(Edit1.Text));
if Family.Text = e1 then begin
j:=j+1;
if j>0 then SResult.RowCount:=SResult.RowCount+1;
SResult.cells[0,j]:=form1.cards_owner.cells[0,i];
SResult.cells[1,j]:=form1.cards_owner.cells[1,i];
SResult.cells[2,j]:=form1.cards_owner.cells[2,i];
SResult.cells[3,j]:=form1.cards_owner.cells[3,i];
end;
end;
end;


это только для фамилии, по аналогии для остальных, но как связать всех их вместе? чтобы был правильный поиск!


 
Sandman25   (2003-07-22 13:21) [6]


if ((Length(FamilyTxt) = 0) or (Pos(FamilyTxt, Cells[..]) = 1)) and ((Length(NameTxt) = 0) or (Pos(" "+NameTxt+" ", Cells[..]) > 0)) and ((Length(SurnameTxt) = 0) or (Pos(" "+SurnameTxt", Cells[..]) > 0)) then



 
NDeu   (2003-07-22 13:26) [7]

or


 
[BAD]Angel   (2003-07-22 13:31) [8]

NDeu >> чего OR?
Sandman25 >> а как все сразу сделать? это только для ФИО, а еще два поля, как привязать к поиску? (Тип и номер)

я не очень понимаю это условие, приведи примерчик ПЛЗ!


 
Sandman25   (2003-07-22 13:33) [9]

NDeu © (22.07.03 13:26)

Точно, а я и не заметил, что поиск немного нестандартный.

if (Pos(FamilyTxt, Cells[..]) = 1) or (Pos(" "+NameTxt+" ", Cells[..]) > 0) or (Pos(" "+SurnameTxt", Cells[..]) > 0) then


 
Sandman25   (2003-07-22 13:34) [10]

if (Pos(FamilyTxt, Cells[..]) = 1) or (Pos(" "+NameTxt+" ", Cells[..]) > 0) or (Pos(" "+SurnameTxt", Cells[..]) > 0)
or (Pos(TipTxt, Cells[..]) = 1) or (Pos(NomerTxt, Cells[..]) = 1)then



 
[BAD]Angel   (2003-07-22 13:36) [11]

Это интересно!!! :) А теперь сожно словами?
Как понять (Pos(FamilyTxt, Cells[..]) = 1)?


 
Sandman25   (2003-07-22 13:39) [12]

Cells[..] начинается с FamilyTxt.

Pos("012","01234356") = 1
Pos("345","0123456") = 4
Pos("898","0123456") = 0

А вообще-то есть кнопка F1


 
[BAD]Angel   (2003-07-22 13:47) [13]

ОГРОМНОЕ СПАСИБО!!!
А про кнопку F1 я знаю, но не очень понимаю! :)
Выручили...


 
NickBat   (2003-07-22 14:51) [14]

а нафига, извините, засовывать данные из файла в таблицу, для того чтобы их там искать?
Не проще искать в файле и выводить сразу в файл. Ведь если засунули данные в таблицу, значит файл как-то структурирован.



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

Форум: "Основная";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
1-10166
Прохожий
2003-07-22 10:33
2003.08.04
Исключение неправельных адресов E-Mail


4-10524
xn0bys
2003-06-02 16:29
2003.08.04
Как сделать так, чтоб использование процессора было не 100%


4-10533
Aleksandr
2003-05-30 13:29
2003.08.04
Как вставить кнопку в апишное окно средствами АПИ?


1-10295
Edvard
2003-07-22 12:13
2003.08.04
Помогите с RichEdit !


3-10093
Spawn
2003-07-11 18:10
2003.08.04
Триггеры





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский