Stored procedures VB6-DAO-存储过程

Stored procedures VB6-DAO-存储过程,stored-procedures,vb6,dao,Stored Procedures,Vb6,Dao,我知道现在不是1998年,但出于各种原因,我需要将VB6应用程序的数据库接口从ADO更改为DAO。我以前没有使用过DAO,我们所有的数据库事务都是在SQLServer2008上使用存储过程进行的。如何在VB6中使用DAO执行带有输入和输出参数的存储过程?显然,这是Microsoft的方法: 我使用的代码模板大致如下: Dim rs As Recordset Dim ws As Workspace Dim db As Database Dim sproc As String Set ws =

我知道现在不是1998年,但出于各种原因,我需要将VB6应用程序的数据库接口从ADO更改为DAO。我以前没有使用过DAO,我们所有的数据库事务都是在SQLServer2008上使用存储过程进行的。如何在VB6中使用DAO执行带有输入和输出参数的存储过程?

显然,这是Microsoft的方法:

我使用的代码模板大致如下:

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没有执行存储过程的固有方式(如ADO的execute函数)。

您可以执行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

哎哟我认为您应该首先查看数据类型映射,因为DAO没有太多的数据类型:(不,我认为他应该做的第一件事是寻找另一个工作。