【CSDN】【请问如何将一个窗体模块化,大家都可以调用此窗体中树型列表中所选择的项目】

drillmaster4 2003-10-18 01:12:22
Option Explicit
Private strServerName As String
Private conCheckbook As Connection
Private rsCheckbook As Recordset
Private strSql As String
Dim i As Integer
Dim blnValid As Boolean
Dim strTemp As String
Dim strChecknumber As String

Private Sub getSQLServerName()
If GetSetting("OnlineBankingDB", "SQL Server Name", "ServerName") = "" Then
strServerName = InputBox("请输入数据库服务器名称")
SaveSetting "OnlineBankingDB", "SQL Server Name", "ServerName", strServerName
Else
strServerName = GetSetting("OnlineBankingDB", "SQL Server Name", "ServerName")
End If
End Sub

Private Sub connectionSQLServer()
Set conCheckbook = New Connection
Set rsCheckbook = New Recordset

On Error GoTo errorhandler
Call getSQLServerName

With conCheckbook
.Provider = "sqloledb"
.ConnectionString = "user id=sa;" & _
"password=;" & _
"data source=" & strServerName & _
";initial catalog=OnlineBankingDB"
.Open
End With

Exit Sub
errorhandler:
MsgBox Err.Number & Err.Source & Err.Description
End Sub

Private Sub Form_Load()
If strServerName = "" Then getSQLServerName
Call connectionSQLServer
If rsCheckbook.State = 1 Then rsCheckbook.Close
rsCheckbook.CursorLocation = adUseClient
strSql = "select * from Customer where vCheckBookNumber is not null"
rsCheckbook.Open strSql, conCheckbook, adOpenDynamic, adLockOptimistic
If rsCheckbook.RecordCount > 0 Then
rsCheckbook.MoveFirst
Do While Not rsCheckbook.EOF
TreeView1.Nodes.Add , , "key" & Trim(rsCheckbook.Fields("cAccountNumber")), rsCheckbook.Fields("cAccountNumber")
If IsNull(rsCheckbook.Fields("vCheckBookNumber")) = False Then
TreeView1.Nodes.Add "key" & Trim(rsCheckbook.Fields("cAccountNumber")), tvwChild, "key" & Trim(rsCheckbook.Fields("vCheckBookNumber")), rsCheckbook.Fields("vCheckBookNumber")
findCheckbookDetail "key" & Trim(rsCheckbook.Fields("vCheckBookNumber")), rsCheckbook.Fields("vCheckBookNumber")
End If
rsCheckbook.MoveNext
Loop
For i = 1 To TreeView1.Nodes.Count
TreeView1.Nodes(i).Expanded = True
Next
End If
End Sub

Private Sub findCheckbookDetail(key As String, checkbook As String)
Dim rsCheckbookDetail As Recordset
Set rsCheckbookDetail = New Recordset
If rsCheckbookDetail.State = 1 Then rsCheckbookDetail.Close
rsCheckbookDetail.CursorLocation = adUseClient
strSql = "select * from TransactionOfCheckBook where vInstructions='未兑' and vCheckBookNumber='" & checkbook & "'"
rsCheckbookDetail.Open strSql, conCheckbook, adOpenDynamic, adLockOptimistic
If rsCheckbookDetail.RecordCount > 0 Then
rsCheckbookDetail.MoveFirst
Do While Not rsCheckbookDetail.EOF
TreeView1.Nodes.Add key, tvwChild, "key" & Trim(rsCheckbookDetail.Fields("vCheckNumber")), rsCheckbookDetail.Fields("vCheckNumber")
rsCheckbookDetail.MoveNext
Loop
End If
Set rsCheckbookDetail = Nothing
End Sub

Private Sub Form_Resize()
Me.Top = (frmMian.Height - Me.Height) / 10
Me.Left = (frmMian.Width - Me.Width) / 2
End Sub

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.key
Case "ok"
If blnValid = False Then
MsgBox "请选择支票", vbInformation, "支票选择"
Else
////////////////////////////////////////////////////////////////
frmAccountDeposit.txtCheckNumber = strChecknumber
'frmAccountDeposit为帐户存款窗口,本窗口为支票选取窗口,当选择工具栏的确定按钮返回所选择的支票,即在frmAccountDeposit帐户存款窗口的txtCheckNumber支票文本框设置为此窗体选择的支票,但因为本窗口想作为公用窗口,即模块化,其他窗体都可能反复调用,返回时将所选择的支票返回,请问如何实现,因为此时实现的只是一个窗体,请问如何多个窗体都能调用
////////////////////////////////////////////////////////////////
Unload Me
End If
Case "cancel"
Unload Me
End Select
End Sub

Private Sub TreeView1_NodeClick(ByVal node As MSComctlLib.node)
Dim i As Long
If (node.Child Is Nothing) Then
strTemp = Trim(node.Text)
i = getlayer(node, TreeView1)
If i = 3 Then
blnValid = True
strChecknumber = strTemp
End If
Else
blnValid = False
End If
End Sub

Private Function getlayer(node As node, treeview As treeview) As Long
Dim pnode As node
Dim num As Long
num = 1
Set pnode = node
Do While Not pnode.Parent Is Nothing
Set pnode = pnode.Parent
num = num + 1
Loop
getlayer = num
End Function
...全文
32 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hacker007 2003-10-18
  • 打赏
  • 举报
回复
①删除 frmAccountDeposit.txtCheckNumber = strChecknumber

////////////////////////////////////////////////////////////////
frmAccountDeposit.txtCheckNumber = strChecknumber
'frmAccountDeposit为帐户存款窗口,本窗口为支票选取窗口,当选择工具栏的确定按钮返回所选择的支票,即在frmAccountDeposit帐户存款窗口的txtCheckNumber支票文本框设置为此窗体选择的支票,但因为本窗口想作为公用窗口,即模块化,其他窗体都可能反复调用,返回时将所选择的支票返回,请问如何实现,因为此时实现的只是一个窗体,请问如何多个窗体都能调用
////////////////////////////////////////////////////////////////

2 修改为公有类型以便其他窗体访问 Public strChecknumber As String

3 在其他窗体的示犯代码
Dim frmTemp As New frmSelectCheckbookDialog
frmTemp.Show 1
Me.txtCheckNumber.Text = frmTemp.strChecknumber
liaorui 2003-10-18
  • 打赏
  • 举报
回复
用全局变量不可以吗???
flc 2003-10-18
  • 打赏
  • 举报
回复
学习
bigpig 2003-10-18
  • 打赏
  • 举报
回复
试试怎么样?
dim kk as new yourform
bigpig 2003-10-18
  • 打赏
  • 举报
回复
不要直接引用你的窗体,而是将窗体当作一个窗体类来用,使用时就实例化一个窗体类就是了。不过要处理好窗体中的变量范围(全局的,局部的等等)
drillmaster4 2003-10-18
  • 打赏
  • 举报
回复
控件怎么做?
阿建像熊猫 2003-10-18
  • 打赏
  • 举报
回复
没看明白,不过帮你UP一下。
yoki 2003-10-18
  • 打赏
  • 举报
回复
就是啊,改成控件简单又方便
射天狼 2003-10-18
  • 打赏
  • 举报
回复
用控件吧!!

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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