Вниз
Скачать: CL | DM;

Проблема... Access   Найти похожие ветки 

 
Bes ©   (2003-08-28 05:02) [0]

вообщем есть 10~20 файлов MS Access (расширение *.mdb)...
мне нужно средством ADOQuery послать SQL запрос сразу всем этим базам данных, и получить отчет ...

я делал так, пускал цикл и менял в параметре AdoQuery1.ConnectionString поле Catalog, а потом инфу перекачивал в StringGrid
все нормально, но 1ых долго, во вторых утомительно...

Мастера! Помогите, как максимально увеличить скорость обработки запроса (или сделать его так чтоб прога не подвисала).... и попутный вопрос: можно ли из к DBGrid подключить несколько источником (DataSourcе), ну т.е. у меня есть 10 компонентов TAdoQuery и чтоб не для каждой создавать свою DBGrid а что в одну все сливалось?
спасибо!

ЗЫ: предложения поменять БД на ченить другое не поможет...не от меня зависит...


 
roottim   (2003-08-28 08:11) [1]

как помнится в акцесе есть такая штука как связь с таблицами
(кликни на список таблиц и в попапе)
вот мб если тебе создать бд и скидать туда все завязаннаые мдб
а там подключайися и делай по ним запрос...
гарантий не даю...


 
sniknik ©   (2003-08-28 08:22) [2]

запросы делай к внешней базе, можно сразу к 2 (вот к 10 не знаю) но даже так гораздо быстрее.
ну можно попробовать так
SELECT * FROM TableFromCurrentBase
UNION ALL
SELECT * FROM TableBase2 IN "D:\xxxxx\Base2.Mdb"
UNION ALL
....
смысл понятен

(попробуй сначала на 2-х, после добавляй остальные)
попутно решится и "попутный" вопрос.
если не получатся все 10 то все одно не используй StringGrid можно извернутся с передачей данных в 1 рекордсет, будет гораздо быстрее.


 
Bes ©   (2003-08-28 15:19) [3]

sniknik, а если база запаполена?


 
Hawk2 ©   (2003-08-28 15:36) [4]

Если все таблицы одинаковой структуры почему бы их не слить в одну и работать с одной. Или каждая база очень большая?

На счет TDataSourcе если у тебя для каждого TAdoQuery он свой то можно использовать один DBGrid, просто меняешь свойство Грида которое называется тоже DataSourcе. Вот так:
DBGrid1.DataSource:=DataSource1;
потом
DBGrid1.DataSource:=DataSource2; и т.д.
А если к тебя один TDataSourcе и один TDBGrid, тогда в TDataSourcе свойству DataSet присваиваешь TAdoQuery. Вот так:
DataSource1.DataSet:=AdoQuery1;
потом
DataSource1.DataSet:=AdoQuery2; и т.д.

А использовать StringGrid для вывода данных из базы это извращение.


 
sniknik ©   (2003-08-28 15:46) [5]

та к которой доступ пароль 11
SELECT * FROM TableBase2 IN "" [MS Access; PWD=11;DATABASE=D:\BASE2.MDB;]
та из которой доступ в строке подключения должно быть прописано


 
sniknik ©   (2003-08-28 15:50) [6]

кстати, если у тебя постоянно работа с 10 таблицами то почему бы в "головной"(или главной) не сделать линки на нужные? они быстрее чем запросы с IN.


 
Bes ©   (2003-08-28 19:44) [7]

2 sniknik, можешь по подробнее про "головную" и линки...и если можно примерчик...

2 Hawk2, так будут выводиться только данные одного компонента, а мне нужно чтобы всех...ну тоесть чтобы DBGrid не очищалась а просто добавляла к уже имеющися записи... если я не прав, подкинь примерчик..

фенк


 
sniknik ©   (2003-08-28 19:57) [8]

какой примерчик? ты что. определи (для себя) какая база у тебя главная, открываеш ее аксесом, дальше "файл"->"внешние данные"->"связь с таблицами" ... после того как нажмеш кнопку тут тебя озарение и посетит. :о))



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.013 c
3-58531
vovan
2003-08-28 11:08
2003.09.18
Halcyon+Добавлние полей


1-58756
Паштет
2003-09-06 03:12
2003.09.18
Чтение кодировок из файлов


7-58941
killer
2003-07-05 20:11
2003.09.18
Как определить путь папки с Window-ом?


3-58595
scorps
2003-08-26 16:38
2003.09.18
Delphi - Oracle


14-58849
Rouse_
2003-08-30 19:22
2003.09.18
Ух... какие мы все впечатлительные




   Наверх