اخواني الكرام
السلام عليكم ورحمة الله وبركاته
حاليا اقوم ببناء شجرة محاسبية عباره عن TreeView
حيث انه لدي في الجدول المطلوب القراءه منه ثلاث حقول هي
Fld_ACCOUNT_ID ويمثل رقم الحساب
Fld_PARENT_LEVEL ويمثل رقم الحساب الاب الذي يتفرع منه
Fld_ACCOUNT_NAME اسم الحساب
عند قيام بعمل هذه الفكره استخدمت الكود التالي
Private Sub buld()
For intloop As Integer = 0 To Accounts.Rows.Count - 1
If Accounts.Rows(intloop).Item("Fld_PARENT_LEVEL").ToString = 0 Then
Dim MainHeader As New TreeNode(Accounts.Rows(intloop).Item("Fld_ACCOUNT_ID").ToString + " -->" + Accounts.Rows(intloop).Item("Fld_ACCOUNT_name").ToString)
MainHeader.Tag = Accounts.Rows(intloop).Item("Fld_ACCOUNT_ID").ToString
TreeView1.Nodes.Add(MainHeader)
search_account(Accounts.Rows(intloop).Item("Fld_ACCOUNT_ID").ToString, MainHeader)
Else
End If
Next
End Sub
Private Sub search_account(ByVal ACCOUNT_ID As Decimal, ByRef secandHeader As TreeNode)
For intloop1 As Integer = 0 To Accounts.Rows.Count - 1
If Accounts.Rows(intloop1).Item("Fld_PARENT_LEVEL").ToString <> 0 Then
If ACCOUNT_ID = Accounts.Rows(intloop1).Item("Fld_PARENT_LEVEL").ToString Then
Dim MainHeader As New TreeNode(Accounts.Rows(intloop1).Item("Fld_ACCOUNT_ID").ToString + " -->" + Accounts.Rows(intloop1).Item("Fld_ACCOUNT_name").ToString)
MainHeader.Tag = Accounts.Rows(intloop1).Item("Fld_ACCOUNT_ID").ToString
secandHeader.Nodes.Add(MainHeader)
search_account(Accounts.Rows(intloop1).Item("Fld_ACCOUNT_ID").ToString, MainHeader)
End If
End If
Next
End Sub
[/code[
ولكن عند التجربه في جدول صغير يعني 100 سطر تقريبا الكود يعمل بشكل جيد
بينما ادا كان حجم البيانات اكبر ولنفرض 4000
فانه للاسف ياخد نصف دقيقه لبناء هذه الشجره
سوالي
هل يوجد خورزمي اخرى او كود اخر لينفذ المطلوب في وقت اقل
الكود والجدول موجود في المرفقات