Понедельник, 06.05.2024, 10:18
Приветствую Вас Гость | RSS
Категории раздела
Вход на сайт
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

MS Access - разработка баз под заказ

Каталог статей


Программное создание, изменение и удаление хранимых запросов

Создание хранимого запроса.

Метод DAO

Вариант 1

 Dim dbs As Database
 Dim qdf As QueryDef
 Dim strQuery As String

 Set dbs = CurrentDB
 strQuery = "qry_Test1" 

' Создание запроса QueryDef.
 Set qdf = dbs.CreateQueryDef(strQuery, "SELECT * FROM tbl_Example1")

 Set qdf = Nothing
 Set dbs = Nothing

Вариант 2

 Dim dbs As Database
 Dim qdf As QueryDef

 Set dbs = CurrentDB

' Создание запроса QueryDef.
 Set qdf = dbs.CreateQueryDef
 qdf.Name = "qry_Test1"
 qdf.Connect = "" ' текущая база данных
 qdf.SQL = "SELECT * FROM tbl_Example1"
 
 CurrentDb.QueryDefs.Append qdf
' обновление коллекции QueryDefs
 CurrentDb.QueryDefs.Refresh

 Set qdf = Nothing
 Set dbs = Nothing


Metod ADO

 Dim cat As ADOX.Catalog
 Dim cmd As ADODB.Command
 Dim strQuery As String
 
 Set cat = New ADOX.Catalog
 Set cmd = New ADODB.Command
 
 strQuery = "qry_Test2"
 cat.ActiveConnection = CurrentProject.Connection
 cmd.CommandText = "SELECT * FROM tbl_Example1"
 cat.Views.Append strQuery, cmd

 Set cmd = Nothing
 Set cat = Nothing



Изменение текста хранимого запроса

Метод DAO

 Dim dbs As Database
 Dim strQuery As String

 Set dbs = CurrentDb
 strQuery = "qry_Test1"

 dbs.QueryDefs(strQuery).SQL = "SELECT Familia FROM tbl_Example1"
 Set dbs = Nothing


Metod ADO

 Dim cat As ADOX.Catalog
 Dim strQuery As String
 
 Set cat = New ADOX.Catalog
 
 strQuery = "qry_Test2"
 cat.ActiveConnection = CurrentProject.Connection
 cat.Views(strQuery).Command = "SELECT Name1 FROM tbl_Example1" 'cmd

 Set cat = Nothing


Удаление хранимого запроса

Метод DAO

 Dim dbs As Database
 Dim qdf As QueryDef
 Dim strQuery As String

 Set dbs = CurrentDb
 strQuery = "qry_Test1"

 dbs.QueryDefs.Delete strQuery

 Set qdf = Nothing
 Set dbs = Nothing


Metod ADO

 Dim cat As ADOX.Catalog
 Dim strQuery As String
 
 Set cat = New ADOX.Catalog
 
 strQuery = "qry_Test2"
 cat.ActiveConnection = CurrentProject.Connection
 cat.Views.Delete strQuery

 Set cat = Nothing


Проверка наличия запроса

Метод DAO

 Dim dbs As Database
 Dim qdf As QueryDef
 Dim strQuery As String

 Set dbs = CurrentDb
 strQuery = "qry_Test1"

 For Each qdf In dbs.QueryDefs
 If qdf.Name = strQuery Then
 Debug.Print "Запрос " & strQuery & " есть"
 Exit For
 End If
 Next
 
 Set qdf = Nothing
 Set dbs = Nothing


Metod ADO

 Dim cat As ADOX.Catalog
 Dim qry As ADOX.View
 Dim strQuery As String
 
 Set cat = New ADOX.Catalog
 
 strQuery = "qry_Test2"
 cat.ActiveConnection = CurrentProject.Connection

 For Each qry In cat.Views
 If qry.Name = strQuery Then
 Debug.Print "Запрос " & strQuery & " есть"
 Exit For
 End If
 Next
 
 Set qry = Nothing
 Set cat = Nothing



Вот и всё

Примечание. Конечно это не откровение, всё это можно найти в учебниках и справочной литературе, а так же в интернете. Но здесь всё собрано вместе.

Источники:
- конференция по Access на сайте SQL.RU
- информация с Windows Dev Center и Developer Network от Microsoft

Дополнение.

Примеры даны для текущей базы данных. Если Вы собираетесь корректировать другую базу данных, то её необходимо предварительно подключить.

Для DAO

 Set dbs = OpenDatabase("Northwind.mdb")

После работы базу необходимо закрыть

 dbs.Close


Для ADO

Для Access 2000-2007, и 32-х битных версий Access 2010-2016 в 32-х битных ОС

' Открыть каталог
 cat.ActiveConnection = _
 "Provider='Microsoft.Jet.OLEDB.4.0';" & _
 "Data Source='Northwind.mdb';"


Для Access 2007, и 64-х и 32-х битных версий Access 2010-2016 в 64-х битных ОС

' Открыть каталог
 cat.ActiveConnection = _
 "Provider='Microsoft.ACE.OLEDB.12.0';" & _
 "Data Source='Northwind.mdb';"


Таким образом Access 2007 и 32-х битные версии Access 2010 и старше могут работать как с провайдером JET так и с провайдером ACE, если они стоят на 32-х битных ОС. 64-х битные версии Access могут работать только с провайдером ACE

Категория: Мои статьи | Добавил: sonni-dim (28.09.2018)
Просмотров: 187 | Теги: query, Access, QueryDef, CreateQueryDef | Рейтинг: 0.0/0
Всего комментариев: 0
avatar