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

Вниз

Как грамотно организовать поиск в 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.02 c
1-10297
starik30
2003-07-22 12:17
2003.08.04
Изменение количества выделенных символов в TEdit


4-10492
tytus
2003-05-30 23:41
2003.08.04
Информация о файле


14-10366
konstantinov
2003-07-16 19:16
2003.08.04
PDF файлы


3-10109
SCORPION ZP
2003-07-13 12:02
2003.08.04
Как в Delphi открыть базу FoxPro?


14-10383
Knight
2003-07-16 21:53
2003.08.04
Свободу действий модераторам!!!