Архив за день: 17.10.2013

Запуск SQL запросов из VBA для Access и Excel

sql-fun
sql-fun
В различных ситуация требуется какое либо действие сделать с БД с помощью SQL запросов, и при написании программы зачастую требуется это сделать из VBA кода. Для этого я использую различные схемы, в зависимости от сложности запроса и поставленной задачи.
, где для всех примеров myBD это объявленная наша БД, например через Dim myBD As Database и последующей Set myBD = CurrentDb , как пример для Access

 

1 — Запуск запросов через QueryDef, ИМХО — использую для ODBC:
Для первого варианта средствами Access делаем обычный запрос  с нужными нами действиями или несколько связанных между собой и запускаем его строчкой ниже. Вообще QueryDef является одним из лучших методов по запуску и выполнению (да запуск сохраненных SQl запросов через него, это далеко не все что он может) запросов в базах данных использующих драйвер ODBC.
myBD.QueryDefs(«ИМЯ_ЗАПРОСА»).Execute
или делаем непосредственный запуск запроса
myBD.QueryDefs.Execute «DELETE * FROM MyTabl»

 

2 — Запуск запросов через RecordSet, ИМХО — использую для ADO:
Этот вариант у меня прижился больше для Excel когда к БД подключаюсь через ADO драйвер, и требуется например сохранить данные в бд, через запрос (Помидорами не кидать, знаю что сам RecordSet позволяет это делать — тут просто пример как можно запустить запрос через него)
Set rs = cmd.Execute(«DELETE * FROM MyTabl», , adExecuteNoRecords)

 

3 — Непосредственный запуск запросов
ИМХО — использовать стоит в основном внутри Access и довольно редко, для мелких задач, а для всего отсльаного лучше через QueryDef:
DoCmd.RunSQL «DELETE * FROM MyTabl»
myBD.Execute «DELETE * FROM MyTabl»