按下面的方法创建了个DLL文件:
1)新建工程,类型为 ActiveX Dll。工程名称为IncSl。
2)添加引用 Microsoft ActiveX Data Objects 2.x Library
3)在类模块UtoS 中添加代码:
Option ExplicitPublic Function GetData() As Recordset
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
cn.Open "..."
Set GetData = cn.Execute("Select 扫描器地址 From ProRate Where......")
End Function将工作编译为IncSl.DLL
之后新建一标准工程:
Private Sub Form_Click()
Dim TestDll As IncSl.UtoS
Set TestDll = New IncSl.UtoS
Debug.Print TestDll.GetData.ActiveConnection
Do While TestDll.GetData.EOF = False
Debug.Print TestDll.GetData.RecordCount '为什么这里的值一直不变都是-1
Debug.Print TestDll.GetData.Fields.Item("扫描器地址").Value'这个值也一直不变
TestDll.GetData.MoveNext '使用这种方法指针不能移动?
Loop End Sub
1)新建工程,类型为 ActiveX Dll。工程名称为IncSl。
2)添加引用 Microsoft ActiveX Data Objects 2.x Library
3)在类模块UtoS 中添加代码:
Option ExplicitPublic Function GetData() As Recordset
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
cn.Open "..."
Set GetData = cn.Execute("Select 扫描器地址 From ProRate Where......")
End Function将工作编译为IncSl.DLL
之后新建一标准工程:
Private Sub Form_Click()
Dim TestDll As IncSl.UtoS
Set TestDll = New IncSl.UtoS
Debug.Print TestDll.GetData.ActiveConnection
Do While TestDll.GetData.EOF = False
Debug.Print TestDll.GetData.RecordCount '为什么这里的值一直不变都是-1
Debug.Print TestDll.GetData.Fields.Item("扫描器地址").Value'这个值也一直不变
TestDll.GetData.MoveNext '使用这种方法指针不能移动?
Loop End Sub
但是没有提示任何错误的,并且Debug.Print TestDll.GetData.Fields.Item("扫描器地址").Value语句能取到第一条记录的值,但是不能移动指针
换成以下的方法也一样
Public Function GetCode() As Recordset
Dim cn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim SqlStr As String
Set cn = New ADODB.Connection
cn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=ProdRoom;Data Source=192.1.1.36" Set rst = New ADODB.Recordset
SqlStr = "Select * From 工序分组" '"Select cInvCode,cInvName,cInvStd From Inventory Where cInvName='" & McInvName & "' And cInvstd='" & McInvStd & "'"
GetCode = rst.Open(SqlStr, cn, adOpenDynamic, adLockReadOnly)
Set GetCode = rst
End Function
Private Sub Form_Click()
Dim Rst As ADODB.Recordset
Dim TestDll As IncSl.UtoS '这是一个类
Set TestDll = New IncSl.UtoS
Set Rst = TestDll.GetData() '取得记录集
Debug.Print Rst.ActiveConnection
Do While Rst.EOF = False
Debug.Print Rst.RecordCount '为什么这里的值一直不变都是-1
Debug.Print Rst.Fields.Item("扫描器地址").Value '这个值也一直不变
Rst.MoveNext '使用这种方法指针不能移动?
LoopEnd Sub
想要打开时就知道记录数,要用客户端游标。