構造体を使用して約180行を戻すSQL 05ストアドプロシージャがあります。Excel VBA - レコードセットからツリービューを作成
ID |名前| ParentId。
私がしたいのは、返されたレコードに基づいてツリービューを作成することです。 以下は、フォーラムの他の場所から変更したサンプルです(here)
私はほとんどそれが私がしたいとは思っていません。
これは私が持っている問題です ルートが追加されました。 次のレイヤーダウンがOKに追加されます。 しかし、次のParentIdをどのようにすべきかはわかりません。私は変数を増分して一致を試してみるべきですか?私はそれをトップの方法に含めるべきだと思う。
うまくいけば、私は最終的なものとしては遠くないですし、右方向に突き出すを必要とする、事前 マイケル
で
多くのおかげで、BOFとEOFのチェックは、私のようにループであります私はそれを持っていない場合は、多くのエラーがスローされているようだ。
Private Sub MakeTree(ByVal rs As ADODB.Recordset)
rs.MoveFirst
Do Until rs.EOF
If (IsNull(rs.Fields("ParentID"))) Then
Call TVFunds.Nodes.Add(, , "Key" + CStr(rs.Fields("Id")), rs.Fields("Name"))
Call MsgBox("Key" + CStr(rs.Fields("Id")) + " " + rs.Fields("Name"), vbInformation, "Added Root")
Else
DrawNode rs, rs.Fields("ParentID"), rs.Fields("ID")
End If
If rs.BOF <> True And rs.EOF <> True Then
rs.MoveNext
End If
Loop
End Sub
Private Sub DrawNode(ByRef r As ADODB.Recordset, ByRef pId As Integer, ByRef Id As Integer)
r.MoveFirst
Do Until r.EOF
If (r.Fields("ParentId") = pId And r.Fields("Id") = Id) Then
Call TVFunds.Nodes.Add("Key" + CStr(r.Fields("ParentId")), tvwChild, "Key" + CStr(r.Fields("Id")), r.Fields("Name"))
Call MsgBox("Key" + CStr(r.Fields("ParentId")) + " Key" + CStr(r.Fields("Id")) + " " + r.Fields("Name"), vbInformation, "Added")
Id = Id + 1
DrawNode r, pId, Id
End If
If r.BOF <> True And r.EOF <> True Then
r.MoveNext
End If
Loop
End Sub
こんにちは、 迅速な応答をありがとうを任意の詳細がある場合は、お問い合わせください上で確認されていません、:...このようにループしながら...がするまでループ
変更ものですか。また、エラーを引き起こした重複したエントリを防ぐためにもう少し2つ目の方法を改良しました。 Do While Notを実装しても、rs.MoveNextにEOF true BOF trueエラーがスローされているように見えますが、2番目のメソッドが正しく機能するまでは一時的な問題だと思っています。再度、感謝します –