2016-11-21 11 views
0

このコードで何が問題になっていますか?私は3つのテーブル、VisitorSheetに関連するBuilding、Visitに関連する訪問者シートを持っています。しかし、すべての建物にVisitorSheetがあるわけではなく、すべてのVisitorSheetに訪問があるわけではありません。このコードを実行すると、すべてのVisitorSheetsが各Buildingに対して表示され、VisitorSheetごとにすべてのVisitsが表示されます。各ツリービューノードに正しいレコードが表示されるようにフィルタリングするにはどうすればよいですか?VB.Netツリービューの親レコードと子レコードのフィルタリング

Me.VisitTableAdapter.Fill(Me.VisitDbDataSet.Visit) 
Me.VisitorSheetTableAdapter.Fill(Me.VisitorSheetDbDataSet.VisitorSheet) 
Me.BuildingTableAdapter.Fill(Me.BuildingDbDataSet.Building) 

Try 
    For Each masterRow As DataRow In BuildingDbDataSet.Tables("Building").Rows 
     Dim masterNode As New TreeNode(masterRow("Abbr").ToString()) 
     TreeView1.Nodes.Add(masterNode) 

     For Each childRow As DataRow In VisitorSheetDbDataSet.Tables("VisitorSheet").Rows 
      masterRow.GetChildRows("SheetNo") 

      Dim childNode As New TreeNode(childRow("SheetDate").ToString()) 
      masterNode.Nodes.Add(childNode) 

      For Each childRow1 As DataRow In VisitDbDataSet.Tables("Visit").Rows 
       masterRow.GetChildRows("VisitNo") 

       Dim childNode1 As New TreeNode(childRow1("Visitor").ToString()) 
       childNode.Nodes.Add(childNode1) 
      Next 
     Next 
    Next 

あなたは現在、各テーブル内のすべての行を反復処理しているサンプル

enter code here

答えて

0

。子の行だけを反復処理する必要があります。

For Each masterRow As DataRow In BuildingDbDataSet.Tables("Building").Rows 
    Dim masterNode As New TreeNode(masterRow("Abbr").ToString()) 
    TreeView1.Nodes.Add(masterNode) 

    For Each childRow As DataRow In VisitorSheetDbDataSet.Tables("VisitorSheet").Rows 
     'masterRow.GetChildRows("SheetNo") 

     Dim childNode As New TreeNode(childRow("SheetDate").ToString()) 
     masterNode.Nodes.Add(childNode) 

     For Each childRow1 As DataRow In masterRow.GetChildRows("SheetNo") 

      '... 

     Next 
    Next 
Next 
+0

今4:54 am - 11/22/2016。様々な変更を試みたが、それでも困惑した。私がプログラムを完了できるようにするコードに変更を加えることができれば幸いです。 TREEVIEWの読み込み用のコードを除いて、プログラムの他の部分はすべてOKです。少し休むつもりです。 –

関連する問題