VB6 - DAO - 存储过程

VB6 - DAO - 存储过程

问题描述:

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

+0

哎哟!我认为你应该看的第一件事是数据类型映射,因为DAO没有很多数据类型:( – onedaywhen 2011-01-31 09:34:49

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

显然,这是微软的方法:

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 

正如你所看到的,我基本上是建立在因为DAO没有固有的方式来执行存储过程(例如ADO的Execute函数),所以使用dbSqlPassThrough将其直接发送到ODBC。