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

Вниз

Вручную перебирать БД...   Найти похожие ветки 

 
able ©   (2004-12-12 13:05) [0]

Делаю нестрогий поиск по бд, вручную перемалываю все поля.
Делаю так:

for i:=1 to datam.ADOTable1.Fields.Count do
    begin
      txt:=dbgrid1.DataSource.DataSet.Fields.Fields[i].AsString;
      Find := FindCompare.IndistinctMatching(3,  txt, EditFilter.Text);
      memo1.Lines.add(txt+" "+inttostr(find));
      end;
    end;

Find - ф-ция поиска..
Он ищет только по первой строке в DBGrid"e.
Вопрос:
-как искать по всей, определённой колонке?


 
Zacho ©   (2004-12-12 13:22) [1]

able ©   (12.12.04 13:05)

Забудь ты про грид, данные находятся не в гриде, а в датасете.

Соответственно, тебе нужно сделать ещё один цикл по датасету, например так:

datam.ADOTable1.First;
while not datam.ADOTable1.Eof do
begin
 for i:=1 to datam.ADOTable1.Fields.Count do
   begin
     txt:=dbgrid1.DataSource.DataSet.Fields.Fields[i].AsString;
     Find := FindCompare.IndistinctMatching(3,  txt, EditFilter.Text);
     memo1.Lines.add(txt+" "+inttostr(find));
     end;
   end;
 datam.ADOTable1.Next;
end;


Eщё посоветую перед выполнением этого сделать datam.ADOTable1.DisableControls, а после - datam.ADOTable1.EnableControls


 
able ©   (2004-12-12 13:23) [2]

Zacho ©   (12.12.04 13:22) [1]
Спасибо!
Сейчас пойду тестить...


 
Anatoly Podgoretsky ©   (2004-12-12 13:23) [3]

First/Next


 
able ©   (2004-12-12 14:07) [4]

Zacho ©   (12.12.04 13:22) [1]
Вылетает exception: "List index out of bounds (6)" :(


 
able ©   (2004-12-12 14:08) [5]

Zacho ©   (12.12.04 13:22) [1]
Сделал

for i:=0 to datam.ADOTable1.Fields.Count-1 do

Всё работает.
Но как искать по определённой колонке?


 
Zacho ©   (2004-12-12 14:33) [6]

able ©   (12.12.04 14:08) [5]
Но как искать по определённой колонке?


Вот без этого цикла: for i:=0 to datam.ADOTable1.Fields.Count-1 do

А вместо txt:=dbgrid1.DataSource.DataSet.Fields.Fields[i].AsString; просто брать данные из нужного поля. Например, txt:=dbgrid1.SelectedField.AsString; Или txt:=dbgrid1.DataSource.DataSet.FieldByName("MY_FIELD").AsString;

И вообще, не обижайся, но сильно советую почитать учебники/документацию, а то у тебя явное незнание основ работы с БД в Дельфи.


 
able ©   (2004-12-12 15:53) [7]

Zacho ©   (12.12.04 14:33) [6]
Thanks, все сделал, что надо было.
Про учебники/документацию, подскажешь что-нибудь хорошее?


 
Zacho ©   (2004-12-12 16:11) [8]

able ©   (12.12.04 15:53) [7]
Про учебники/документацию, подскажешь что-нибудь хорошее?


Вообще по СУБД советую К.Дж.Дейт "Введение в системы баз данных"
По SQL - М.Грабер "SQL"
По Дельфи и БД, честно говоря, кроме "Дельфи N. Руководство разработчика БД" Шумаков, Фаронов (N - номер версии Дельфи, точно знаю, что есть для 3,4,5), ничего не вспоминается. Но эта тема неоднократно поднималась здесь, поищи в архивах или спроси в "Потрепаться" - наверняка много чего насоветуют.

Да, ещё естественно Delphi Help :) особенно всё, что касается TDataSet


 
able ©   (2004-12-12 20:08) [9]

Zacho ©   (12.12.04 16:11) [8]
Спасибо большое, почитаю..


 
YurikGL ©   (2004-12-12 22:08) [10]


> able ©   (12.12.04 13:05)  

А не проще в другой датасет сделать сначала селект с where в котором все записи гарантированно будут удовлетворять твоему условию, а потом пробежаться по этому датасету и пихнуть в мемо все его записи?


 
able ©   (2004-12-13 16:02) [11]

YurikGL ©   (12.12.04 22:08) [10]
Так а как сгенерить запрос where, чтобы он подходил 100%?


 
YurikGL ©   (2004-12-13 16:19) [12]

able ©   (13.12.04 16:02) [11]

Ты словами опиши что тебе надо.
Хотя подозреваю, что конструкция будет что-то типа

where поле like %искомая подстрока%

А вообще, сходи на http://podgoretsky.com/ddp.html и почитай "Мартин Грубер. Понимание SQL"


 
sniknik ©   (2004-12-13 18:24) [13]

> Хотя подозреваю, что конструкция будет что-то типа
> where поле like %искомая подстрока%

не будет
http://delphimaster.net/view/3-1102698760/



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

Текущий архив: 2005.01.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.056 c
3-1103095185
PereZ
2004-12-15 10:19
2005.01.16
Поиск таблиц содержащих искомое поле


3-1102874458
korvin
2004-12-12 21:00
2005.01.16
Парадокс с выходными данными в серверной процедуре


14-1103896711
Тимур
2004-12-24 16:58
2005.01.16
Железо - хелп!


1-1103891555
swinole
2004-12-24 15:32
2005.01.16
Поиск по TreeView


1-1104340572
Kh v Pa
2004-12-29 20:16
2005.01.16
RichEdit98