Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.036 c
8-1097268850
Вадим
2004-10-09 00:54
2005.01.16
Потерянные буфера


14-1104350832
Hypercube
2004-12-29 23:07
2005.01.16
Inno Setup 5


6-1098771266
ArMellon
2004-10-26 10:14
2005.01.16
Народ как реливать быструю пересылку скриншотов по


1-1104322151
zokzok
2004-12-29 15:09
2005.01.16
Доступ к форме


10-1080775305
big_bugzy
2004-04-01 03:21
2005.01.16
Подскажите, почему ком-приложение не запускается в Win98?





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