【发布时间】:2015-05-12 15:08:47
【问题描述】:
我有一个试图从存储过程中填充的树视图,但我似乎无法获得我想要的结果。
存储过程如下所示:
ALTER PROCEDURE [dbo].[Inspections_LoadRecords]
@SearchValue varchar(30) = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT
InspectorName.InspectorName,
InspectionHeader.InspectionDate,
PropertyMaster.AddressLine1,
InspectionProperties.PropertyID,
InspectionHeader.InspectionID,
InspectorName.InspectorID,
InspectionProperties.GroupID
FROM
InspectionProperties
LEFT OUTER JOIN
InspectionHeader ON InspectionProperties.InspectionID = InspectionHeader.InspectionID
LEFT OUTER JOIN
InspectorName ON InspectionHeader.InspectorID = InspectorName.InspectorID
AND InspectionHeader.InspectorID = InspectorName.InspectorID
LEFT OUTER JOIN
PropertyMaster ON InspectionProperties.PropertyID = PropertyMaster.PropertyID
WHERE
(InspectionHeader.InspectionID = InspectionHeader.InspectionID)
ORDER BY
InspectorName.InspectorName DESC
END
然后是加载树视图的代码
Sub LoadInspectionTree()
'**Loads Property List
' Initialise Error Checking
' Dimension Local Variables
Dim uRecSnap As ADODB.Recordset
Dim uPar As ADODB.Parameter
Dim uNode As TreeNode
Dim aNode As TreeNode
Dim bNode As TreeNode
Dim iInspectorID As Integer = 0
Dim iInspectorcnt As Integer = 0
Dim iInspectionID As Integer = 0
Dim iInspectionIDcnt As Integer = 0
Dim iGroupNumber As Integer = 0
Dim iGroupNumbercnt = 0
Dim uStackframe As New Diagnostics.StackFrame
Try
' Check For Open Connection
If uDBase Is Nothing Then
OpenConnection()
bConnection = True
End If
' Run Stored Procedure - Load Property List (Based on Search Value)
uCommand = New ADODB.Command
With uCommand
.ActiveConnection = uDBase
.CommandType = ADODB.CommandTypeEnum.adCmdStoredProc
.CommandTimeout = 0
uPar = .CreateParameter("@SearchValue", ADODB.DataTypeEnum.adVarChar, ADODB.ParameterDirectionEnum.adParamInput, 30)
.Parameters.Append(uPar)
.Parameters("@SearchValue").Value = txtFilter.Text
.CommandText = "Inspections_LoadRecords"
uRecSnap = .Execute
End With
' Suppress TreeView Repaint / Clear TreeView
tgvInspections.BeginUpdate()
tgvInspections.Nodes.Clear()
tgvInspections.ShowNodeToolTips = True
' Populate List
Do Until uRecSnap.EOF
If iInspectorID <> uRecSnap("InspectorID").Value Then
uNode = tgvInspections.Nodes.Add("N" & Format(uRecSnap("InspectorID").Value, "0000"), uRecSnap("InspectorName").Value)
uNode.Tag = "N:" & Format(uRecSnap("InspectorID").Value, "0000") & ":0000" & Format(uRecSnap("InspectionID").Value, "0000") & "0000"
iInspectorID = uRecSnap("InspectorID").Value
iInspectorcnt = iInspectorcnt + 1
End If
If (IsDBNull(uRecSnap("GroupID").Value)) = False Then
If iGroupNumber <> uRecSnap("GroupID").Value Then
aNode = uNode.Nodes.Add("I" & Format(uRecSnap("GroupID").Value, "0000"), uRecSnap("InspectionDate").Value)
aNode.Tag = "I:" & Format(uRecSnap("InspectionDate").Value, "") & Format(uRecSnap("InspectorID").Value, "0000") & Format(uRecSnap("InspectionID").Value, "0000") & Format(uRecSnap("GroupID").Value, "0000")
iGroupNumber = uRecSnap("GroupID").Value
iGroupNumbercnt = iGroupNumbercnt + 1
End If
bNode = uNode.Nodes(iGroupNumbercnt - 1).Nodes.Add("P" & Format(uRecSnap("GroupID").Value, "0000"), uRecSnap("AddressLine1").Value)
bNode.Tag = "P:" & Format(uRecSnap("InspectionID").Value, "0000") & Format(uRecSnap("PropertyID").Value, "0000") & "0000" & Format(uRecSnap("InspectorID").Value, "0000") & Format(uRecSnap("GroupID").Value, "0000")
uRecSnap.MoveNext()
End If
' End If
Loop
Do Until uRecSnap.EOF
Loop
uRecSnap.Close()
' Close Connection
Catch ex As Exception
' Catch Error
If Err.Number <> 0 Then
WriteAuditLogRecord(uStackframe.GetMethod.DeclaringType.FullName, uStackframe.GetMethod.Name.ToString, "Error", Err.Description & vbCrLf & vbCrLf & ex.StackTrace, 0)
MsgBox("System Error Ref: " & sAuditID & vbCrLf & uStackframe.GetMethod.DeclaringType.FullName & " / " & uStackframe.GetMethod.Name.ToString & vbCrLf & Err.Description & vbCrLf & vbCrLf & ex.StackTrace & Chr(13) & sErrDescription, MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "Business Management System - Unexepected Error Ref: " & sAuditID)
End If
Finally
If bConnection Then CloseConnection()
uRecSnap = Nothing
End Try
End Sub
我现在得到的树视图是
Richard Glass -
--2015-05-11
--123 Fake Street
--124 Fake Street
--2015-05-12
-- 122 Fake Street
-- 1234 Fake Street
Molly McEwan--
--2015-05-13
在这条记录之后,当应该有另一个地址时它会失败
任何想法都会有所帮助。
存储过程返回
Inspector Date Address, PropID, InsapecionID ,InspectorID, GroupID
RichardGlass---2015-05-11----123 Fake Street----23----1----1----1
RichardGlass---2015-05-11----124 Fake Street---24-----2----1----1
RichardGlass---2015-05-12----122 Fake Street-- 25-----3----1----2
RichardGlass---2015-05-12----132 Fake Street---26-----4----1----2
MollyMcEwan ---2015-05-13----145 Fake Street --27-----5----3----3
【问题讨论】:
-
你说它失败了......你能分享错误信息吗?另外,你的where子句有什么意义?这就像说 1 = 1。你的程序有一个参数,但它没有被使用??
标签: sql-server vb.net stored-procedures treeview