Форум: "Базы";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];
ВнизПроблема... 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 вся ветка
Форум: "Базы";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c