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