关于DLL的简单问题

gzhoney 2004-10-26 11:28:52
我写了个DLL,我的思路是这样。
因在DLL里很多都要操作数据库的,所以我想在登录系统时把Connection对象传递过去,同时在DLL里把Connection设成全局变量,希望能在整个DLL里调用Connection对象

详细代码如下:(DLL里有一个模块,一个类模块)
1.MOD_CONN 模块
Public RUSER As String
Public con As ADODB.Connection
Public Place As String '地方
Public Business As String '权限

2.Cls_awbnocheck 类模块
Option Explicit
Public Property Set Mcnnquery(ByVal conn As ADODB.Connection)
Set con = conn
End Property

Private Property Get Mcnnquery() As ADODB.Connection
Set con = con
End Property

Public Function SQLb(ByVal con As ADODB.Connection, ByVal CRUSER As String, ByVal Bus As String)
'登录成功后传递相应参数
RUSER = CRUSER
Business = Bus
Set Mcnnquery = con '设置cnnquery属性

End Function

Public Function FEI(ByVal area As String, ByVal pyn As String, ByVal TBL As String) As Boolean
'############################
'名称: fei
'用途:检查该日报表是否已确定
'参数:area 报表部门 pyn 报表日期 tbl 表名
'返回值:true 已确定 False 未确定
'############################
Set RS = New ADODB.Recordset
RS.CursorType = adOpenKeyset
RS.LockType = adLockOptimistic
RS.Open "SELECT REBOK FROM " & TBL & " WHERE AREA='" & Trim(area) & "' AND PYN='" & Format(pyn, "YYYY-MM-DD") & "'", con
If Not RS.EOF Then
If Trim(RS.Fields(0).Value) = "已确定" Then
FEI = True
Else
FEI = False
End If
Else
FEI = False
End If
RS.Close
Set RS = Nothing

End Function


在登录成功后,传递相关变量

'登录成功后传递相应信息到 CBS
Dim obj As New CBS.CLS_CONN
Call obj.SQLb(con, Ruser, CN, Trim(Business))


现在遇到的问题:(编译前运行完全通过)
1.执行 FEI 函数时,提示"对象关闭",我想这个对象指的是Connection对象吧。为什么会关闭?这样不能把Connection对象定义为全局变量吗?
2.不能修改 FEI 函数 , 如:在 FEI 里增多一个参数 ByVal manage As String ,这样,在程序中引用时好象整个DLL都无效.如把增加的删除后又可以引用了。

请教高手
...全文
75 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gzhoney 2004-10-27
  • 打赏
  • 举报
回复
不行啊

gzhoney 2004-10-26
  • 打赏
  • 举报
回复
程序已成形了,连接是在主程序里连接,我想连接成功后把Connection对象传给DLL并在DLL里设成全局变量来用.
lyxhappy 2004-10-26
  • 打赏
  • 举报
回复
你可能把与数据库连接部分与访问部分分开,各做一DLL,在访问DLL中调用连接DLL就行了
hansong_ll 2004-10-26
  • 打赏
  • 举报
回复
还有这儿:
Public Function SQLb(ByVal con As ADODB.Connection, ByVal CRUSER As String, ByVal Bus As String)
改为:
Public Function SQLb(ByRef con As ADODB.Connection, ByVal CRUSER As String, ByVal Bus As String)
hansong_ll 2004-10-26
  • 打赏
  • 举报
回复
你的问题应出在这儿:
Public Property Set Mcnnquery(ByVal conn As ADODB.Connection)
应为:
Public Property Set Mcnnquery(ByRef conn As ADODB.Connection)

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧