我有一个关于 VBNET 的快速问题,我目前正在使用 VS 2012 Express 和 Microsoft Access 作为我的数据库。
我的问题是,如何将查询放入模块中,而不是将查询放入表单本身?假设我在 frmStock 有这个功能:
库存:
Public Sub FillCategory(ByVal Key As String, ByVal Txt As String, ByVal N As TreeNode)
Dim TD As TreeNode
If N Is Nothing Then
TD = tvCategory.Nodes.Add(Key, Txt)
Else
TD = N.Nodes.Add(Key, Txt)
End If
Dim cmd As New OleDbCommand("SELECT * FROM Category WHERE Category_Parent = ?", conn)
cmd.Parameters.AddWithValue("Category_Parent", Key)
Dim dr = cmd.ExecuteReader
Do While dr.Read()
FillCategory(dr("Category_ID"), dr("Category_Name"), TD)
Loop
dr.Close()
cmd.Dispose()
End Sub
我想搬家
Dim cmd As New OleDbCommand("SELECT * FROM Category WHERE Category_Parent = ?", conn)
改为模块。
我试着做:
Module queryCollection
Public getCategoryParent As New OleDbCommand( _
"SELECT * FROM Category WHERE Category_Parent = ?", conn)
End Module
并将我的 FillCategory 函数修改为:
Public Sub FillCategory(ByVal Key As String, ByVal Txt As String, ByVal N As TreeNode)
Dim TD As TreeNode
If N Is Nothing Then
TD = tvCategory.Nodes.Add(Key, Txt)
Else
TD = N.Nodes.Add(Key, Txt)
End If
getCategoryParent.Parameters.AddWithValue("Category_Parent", Key)
Dim dr = getCategoryParent.ExecuteReader
Do While dr.Read()
FillCategory(dr("Category_ID"), dr("Category_Name"), TD)
Loop
dr.Close()
getCategoryParent.Dispose()
End Sub
更新:
我的问题的一些屏幕截图:
我的数据库: http: //puu.sh/39CMV.PNG
在将我的查询移入模块之前:http: //puu.sh/39D0M.PNG
将我的查询移入模块后:puu.sh/39CVV.PNG
似乎只执行一次(?)为什么会这样以及在模块中声明我的查询的正确方法是什么?
我实际上有很多查询,我想将它们存储到一个地方以便更有条理的编码。