VB6 - DAO - Хранимые процедуры - PullRequest
0 голосов
/ 31 января 2011

Я знаю, что это не 1998 год, но по разным причинам я должен изменить интерфейс базы данных приложения VB6 с ADO на DAO. Я раньше не работал с DAO, и все наши транзакции базы данных выполняются на SQL Server 2008 с использованием хранимых процедур. Как мне выполнить хранимые процедуры с параметрами ввода и вывода, используя DAO в VB6?

Ответы [ 2 ]

1 голос
/ 02 февраля 2011

Вы можете выполнить QueryDef, например:

Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim scn As String

Set db = CurrentDb

''http://connectionstrings.com
scn = "ODBC;Description=test;DRIVER=SQL Server;SERVER=server;" _
    & "Trusted_Connection=Yes;DATABASE=test"

''For this example
SiteID = 3
MachineID = "abc"

Set qdf = db.CreateQueryDef("")
qdf.Connect = scn
''This is important, if you wish to execute the query
qdf.ReturnsRecords = False
qdf.SQL = "dbo.sproc_auditlog @siteid=" & SiteID & ", @machine='" & MachineID & "'"
qdf.Execute dbFailOnError
1 голос
/ 01 февраля 2011

Очевидно, что это путь Microsoft:

http://support.microsoft.com/kb/168210

Шаблон кода, который я использую, выглядит примерно следующим образом:

Dim rs As Recordset
Dim ws As Workspace
Dim db As Database
Dim sproc As String

Set ws = DBEngine.Workspaces(0)
Set db = ws.OpenDatabase("", False, False, conString)

sproc = "EXEC sproc_AuditLog @site=" + siteID + ", @machine='" + MachineID + "'"
Set rs = db.OpenRecordset(sproc, dbOpenSnapshot, dbSQLPassThrough)
rs.Close

Как вы можете видетьЯ по сути строю оператор EXEC в строке, а затем использую dbSqlPassThrough для отправки его напрямую в ODBC, поскольку у DAO нет встроенного способа выполнения хранимых процедур (таких как функция Execute ADO).

...