Показать полную графическую версию : Запрос к аксессовской БД
Поставили прикладное ПО которое работает с MDB базой. Мне доводилось общаться только с SQL БД. А тут надо срочно написать запрос к аксессовской базе, который выводит в файл (лучше rtf или xls, но можно и txt ) результаты выборки из таблицы. И главное видимо понять из чего его пользователям выполнять. То есть обычный пользователь должен ввести диапазон значений и парой кликов мышкой получить у себя файл с данными. Запустить Access и там формировать вручную отчёт будет сложно. Поэтому для меня не менее важен вопрос из чего такой запрос удобно выполнять.
Сам запрос несложный. Есть таблица tab1 в ней поля – KeysID (счётчик), Name1, Name2, Name3 …… Name10. Надо, перебирая строки для KeysID с (например) 10 по 30, вывести для каждой Name1, Name2, Name10 в следующем виде:
Наименование: «KeysID» (10)
Имя1: «Name1»
Имя2: «Name2»
Имя10: «Name10»
Наименование: «KeysID» (11)
Имя1: «Name1»
Имя2: «Name2»
Имя10: «Name10»
…..
Диапазон для KeysID пользователь будет каждый раз задавать вручную.
Delirium
19-04-2010, 02:24
Мне доводилось общаться только с SQL БД »
Ну можно настроить выгрузку из Access в SQL Server, например, каждую минуту(если база маленькая). И на основе таблицы SQL уже можно делать выгрузки и прочее.
Вместе с Access по моему ставится какая-то урезанная версия sql. Только в утановленных программах она не видна.
Честно говоря, всё равно видимо придётся пользователю выполнять скрипт в QA или EM. Так как автоматический запрос не подходит. В программе могут работать и постоянно и один раз в неделю. Просто как только поработал в программе необходимо делать выгрузку из БД в файл. При этом пользователь должен вручную задать диапазон строк (значений) для выгрузки.
А в VBA это можно сваять? Правда никогда не пользовал его.
Delirium
20-04-2010, 01:35
Делается форма, на которой будет 2 текстовых поля. Сохраняется форма под любым именем, например, Form1. Далее создается запрос, который будет иметь все поля из таблицы для выводаю В условиях KeysID в конструкторе ставим:
Between [Forms]![Form1]![Поле0] and [Forms]![Form1]![Поле2]
Сохраняем запрос.
Далее создаем на форме кнопку, ставим условие - выполнить программу. В открывшемся окне пишем ровно три строки:
DoCmd.OpenQuery "Query1", acViewNormal, acReadOnly
DoCmd.RunCommand acCmdOutputToExcel
Application.Quit
Первая строка - выполняет наш запрос с параметрами
Вторая - выгружает в Excel
Третья - Закрывает Access
По поводу выгрузки в Excel можно почитать по ссылкам ниже:
http://www.vbforums.com/showthread.php?t=376693
http://www.bigresource.com/MS_ACCESS-VBA-to-export-access-to-excel-K55g3551.html
http://www.access-programmers.co.uk/forums/showthread.php?t=99512
Можно сделать выгрузку в TXT файл, с разделителями - запятой.
Delirium
20-04-2010, 01:44
Во вложении пример.
Delirium, спасибо. Пробую.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.