Як грамотно організувати пошук у StringGrid
Майстри, допоможи будь ласка (кодом, або алгоритмом), як грамотно організувати пошук у StringGrid'і?
N ПІБ Тип N карти 1 Іванов Іван Іванович Персональний 1234 2 Петров Петро Петрович ВСД 0042 3 Сиборов Сідр Сидорович Персональний 0036
Рядки пошуку на формі:
Прізвище: __________ Ім'я: _________ По батькові: ___________ Тип: ______________________________ N картки: __________________________
Мені треба, щоб я ввів у пошуку, припустимо: Прізвище і Тип, а мені прога повинна записати у файл все, що знайшла!
Приклад 2: Прізвище:ПетрівІм'я: __________ По батькові: ________ Тип: __________________________ N картки:00
результат, що має бути: 2ПетровПетро Петрович ВСД0042 3 Сиборов Сидр Сидорович Персональний0036
Допоможіть, усю голову поламав! :(
Звідки беруться дані для гриду? Якщо з бази даних, то в ній потрібно шукати (TQuery.SQL), а не в гриді.
справа така: дані беруться з файлу, заносяться в StringGrid, а результат хочу вивести в новий String. Ось!
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 . // додавання до іншого грід
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 . // додавання до іншого грід
У мене є 5 полів для пошуку! Прізвище Ім'я По батькові Тип Номер карти
Мені треба зробити пошук окремо за ПРІЗВИЩЕ ІМЕНІ ПО БАТЬКОВІ, не пов'язуючи їхразом.
це тільки для прізвища, за аналогією для інших, але як пов'язати їх усіх разом? щоб був правильний пошук!
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 >> чого OR? Sandman25 >> а як все одразу зробити? це тільки для ПІБ, а ще два поля, як прив'язати до пошуку? (Тип та номер)
я не дуже розумію цю умову, наведи приклад ПЛЗ!
Точнісінько, а я й не помітив, що пошук трохи нестандартний.
if (Pos(FamilyTxt, Cells[..]) = 1) or (Pos(" "+NameTxt+" ", Cells[..]) > 0) or (Pos(" "+SurnameTxt", Cells[.. ]) 0) then
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
Це цікаво. :) А тепер сожно словами? Як зрозуміти (Pos(FamilyTxt, Cells[..]) = 1)?
Cells[..] починається з FamilyTxt.
Pos("012","01234356") = 1 Pos("345","0123456") = 4 Pos("898","0123456") = 0
А взагалі є кнопка F1
ВЕЛИЧЕЗНЕ СПАСИБІ. А про кнопку F1 я знаю, але не дуже розумію! :) Виручили.
а нафіга, вибачте, засовувати дані з файлу в таблицю, щоб їх там шукати? Не простіше шукати у файлі та виводити відразу у файл. Адже якщо засунули дані в таблицю, то файл якось структурований.