Форум: "Базы";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
ВнизВручную перебирать БД... Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.033 c