Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.08.2009, 10:41   #1
doniyor
Форумчанин
 
Аватар для doniyor
 
Регистрация: 22.04.2008
Сообщений: 143
По умолчанию Цикл в БД ADOQuery

Hi всем!
У меня вопрос про цикл в базах данных. Картина такая: Есть папки, в которых находятся файлы баз данных *.mdb
Есть форма, которая отображает данные по запросу пользователя (DBGrid1она отображает данные при OnChange ComboBox1)
Т.е. В ComboBox находятся все названия папок и на OnChange ComboBox'a я поставил условие смены файла данных *.mdb
Задача - организовать поиск искомого имени по всем файлам *.mdb, находящимся в папках.
Поиск в рамках одной базы я организую вот так:

Код:
ClientsADOQuery1.Active:=false;
ClientsADOQuery1.SQL.Clear;
ClientsADOQuery1.SQL.Add('Select *');
ClientsADOQuery1.SQL.Add('From clients');
ClientsADOQuery1.SQL.Add('where Name like'''+Form9.Edit1.Text+'''');
Form1.DBGrid1.DataSource:=module1.FindDataSource;
ClientsADOQuery1.Active:=true;
Я думаю, здесь имеет место написать цикл в следующем порядке:
1. Перечислять все папки из ComboBox'a
2. При каждом названии папки переключать ConnectionString ADOQuery1 на название папки из ComboBox'a
3. Выполнять SQL-запрос
4. Показывать найденные соответствующие записи независимо из какой базы *.mdb

Вопрос- как этот цикл организовать машинным языком?

P.S Исходника нет потому что - во-первых весит много, во вторых это почти законченный проект. необессуйте
Мой сайт - www.fortis-soft.narod.ru
doniyor вне форума Ответить с цитированием
Старый 14.08.2009, 11:44   #2
SlavaSH
Форумчанин
 
Регистрация: 12.08.2008
Сообщений: 174
По умолчанию

Цитата:
Сообщение от doniyor Посмотреть сообщение
Hi всем!
У меня вопрос про цикл в базах данных. Картина такая: Есть папки, в которых находятся файлы баз данных *.mdb
Есть форма, которая отображает данные по запросу пользователя (DBGrid1она отображает данные при OnChange ComboBox1)
Т.е. В ComboBox находятся все названия папок и на OnChange ComboBox'a я поставил условие смены файла данных *.mdb
Задача - организовать поиск искомого имени по всем файлам *.mdb, находящимся в папках.
Поиск в рамках одной базы я организую вот так:

Код:
ClientsADOQuery1.Active:=false;
ClientsADOQuery1.SQL.Clear;
ClientsADOQuery1.SQL.Add('Select *');
ClientsADOQuery1.SQL.Add('From clients');
ClientsADOQuery1.SQL.Add('where Name like'''+Form9.Edit1.Text+'''');
Form1.DBGrid1.DataSource:=module1.FindDataSource;
ClientsADOQuery1.Active:=true;
Я думаю, здесь имеет место написать цикл в следующем порядке:
1. Перечислять все папки из ComboBox'a
2. При каждом названии папки переключать ConnectionString ADOQuery1 на название папки из ComboBox'a
3. Выполнять SQL-запрос
4. Показывать найденные соответствующие записи независимо из какой базы *.mdb

Вопрос- как этот цикл организовать машинным языком?

P.S Исходника нет потому что - во-первых весит много, во вторых это почти законченный проект. необессуйте
ну так а в чём проблема? что не получается сделать?

приведите свою строку соединения с базой данных
SlavaSH вне форума Ответить с цитированием
Старый 14.08.2009, 12:05   #3
Wicort
Форумчанин
 
Аватар для Wicort
 
Регистрация: 04.08.2009
Сообщений: 684
По умолчанию

проблема у него в том, чтобы это:
Цитата:
1. Перечислять все папки из ComboBox'a
2. При каждом названии папки переключать ConnectionString ADOQuery1 на название папки из ComboBox'a
3. Выполнять SQL-запрос
4. Показывать найденные соответствующие записи независимо из какой базы *.mdb
запрограммировать )
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой?
Wicort вне форума Ответить с цитированием
Старый 14.08.2009, 12:23   #4
SlavaSH
Форумчанин
 
Регистрация: 12.08.2008
Сообщений: 174
По умолчанию

Цитата:
Сообщение от Wicort Посмотреть сообщение
проблема у него в том, чтобы это:
запрограммировать )
что-то я очень сомневаюсь что в этом проблема. Здесь всего-то надо в строке с подключением изменить файл базы данных, а остальное у него уже организованно
SlavaSH вне форума Ответить с цитированием
Старый 15.08.2009, 13:00   #5
doniyor
Форумчанин
 
Аватар для doniyor
 
Регистрация: 22.04.2008
Сообщений: 143
По умолчанию

Цитата:
ну так а в чём проблема? что не получается сделать?
Не получается организовать это всё на языке Дельфи. А именно -
а) Как начать цикл? так? -
Код:
for i:=0 to ADOTable.records.count
или не так?

b) Как поочерёдно переключать в ADOConnection (ConnectionString) все папки? (я имею ввиду в цикле,так, чтобы одна папка больше одного раза не повторялась)

ЗЫ Попробую выложить исходник проблемы позже...

ВСЕМ СПАСИБО!
Мой сайт - www.fortis-soft.narod.ru
doniyor вне форума Ответить с цитированием
Старый 16.08.2009, 08:38   #6
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

У вас в этом комбобоксе содержатся пути к файлам? если нет то не очень понимаю его назначение...
В любом случае для начало полезно иметь список всех файлов, к которым возможно придётся подключатся. Это очень облегчит выбор дальнейших действий.
Открытие файлов в процессе поиска, мне кажется полезно только в 1 случае, если с файлами может в это время ещё чтото происходить. То есть ктото их будет перемещать или удалять. И то спорно..
В общем сначала запишите все имена файлов и полный путь к ним, в какойнибудь TStringList а с ним потом и работайте.
Алгоритмов поиска На форуме достаточно...
vovk вне форума Ответить с цитированием
Старый 18.08.2009, 19:16   #7
doniyor
Форумчанин
 
Аватар для doniyor
 
Регистрация: 22.04.2008
Сообщений: 143
По умолчанию

ЛЮДИ!!!
Вот выставляю на ваше внимание исходник аналогичной программы. Надеюсь на ваше понимание.
А вопрос всё ещё то же -
КАК ПРОИЗВОДИТЬ ПОИСК ИСКОМОГО ЗНАЧЕНИЯ ПО ВСЕМ БАЗАМ, ИМЕНА КОТОРЫХ ИЗВЕСТНЫ В TSTRINGLIST
Вложения
Тип файла: rar TeSt.rar (370.8 Кб, 11 просмотров)
Мой сайт - www.fortis-soft.narod.ru
doniyor вне форума Ответить с цитированием
Старый 18.08.2009, 22:33   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) неясно, в каком именно поле Вы хотите искать?!
искать полное совпадение, или частичное?

просто в ОДНОЙ ОТКРЫТОЙ БД искать получается?

Если это не проблема, то тогда в цикле перебираете всё базы и ищете ПОСЛЕДОВАТЕЛЬНО в каждой отдельной БД. проще всего результаты показывать также последовательно:
имя БД, где нашли и записи, которые подходят
кнопочку ДАЛЬШЕ - ищем следующую БД и записи, которые подходят и так до последней БД.


P.S. я бы для поиска по определённому полю предложил что-то вроде:
SELECT * FROM CLIENTS WHERE SURNAME LIKE '*Ко*';
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AdoQuery lenuxoid БД в Delphi 6 25.03.2010 18:24
ADOQuery antoni БД в Delphi 3 19.06.2009 07:49
ADOQuery Только_Учусь Помощь студентам 2 16.07.2008 00:31
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34