السادة الأعضاء
السلام عليكم ورحمة الله وبركاته
اود ان أسألكم عن النظام الشبكي (مثل نظام شجرة العائلة)
بجدول باسم cust
Code : رقم الأبن
Name1 : اسم الأبن
Ab : رقم الأب
Mony : المبلغ الخاص بالأبن
بحيث يكون رقم الأبن مفتاح اساسي ولا يتكرر
ولكل اب مجموعة من الابناء
ولقد قمت بعمل إجراءات لجمع المبالغ الخاصة بالابناء بإختيار رقم الاب وذلك بواسطة فيجول بيسك وهو كما يلي
المطلوب من السادة الاعضاء تحويل هذه الدالة والإجراءات التي تتبع لها إلى الأس كيو ل وكيفية الوصول إليها من الفيجول لني اعرف ان الإجراءات والدوال تعمل في بصورة اسرع في الأس كيو ل هذا ولكم جزيل الشكر
Public Function total(code As Double) z = 0 Set rec = Nothing Set rec = New Recordset rec.Open "select * from cust where code=" & code, cnn, adOpenStatic, adLockOptimistic If rec.EOF = False Then i = 0 Do While Not rec.EOF i = i + 1 ii = rec!code With rec z = z + Val(!mony) End With Set hrec = Nothing Set hrec = New Recordset hrec.Open "select * from cust where ab=" & ii, cnn, adOpenStatic, adLockOptimistic If hrec.EOF = False Then hrec.MoveLast ss = hrec.RecordCount hrec.MoveFirst For s = 1 To ss With hrec z = z + Val(!mony) End With Set rs = Nothing Set rs = New Recordset rs.Open "select * from cust where ab=" & hrec!code, cnn, adOpenStatic, adLockOptimistic If rs.EOF = False Then rs.MoveLast ll = rs.RecordCount rs.MoveFirst For l = 1 To ll With rs z = z + Val(!mony) End With Set wrec = Nothing Set wrec = New Recordset wrec.Open "select * from cust where ab=" & rs!code, cnn, adOpenStatic, adLockOptimistic If wrec.EOF = False Then wrec.MoveLast pp = wrec.RecordCount wrec.MoveFirst For pep = 1 To pp With wrec z = z + Val(!mony) End With Call tr(wrec!code) wrec.MoveNext Next End If rs.MoveNext Next End If hrec.MoveNext Next End If rec.MoveNext Loop Else End If total = Val(z) End Function Private Sub tr(tt As Double) Set mycust1 = Nothing Set mycust1 = New Recordset mycust1.Open "select * from cust where ab=" & tt, cnn, adOpenStatic, adLockOptimistic Do While Not mycust1.EOF z = z + Val(mycust2!mony) Call tr2(mycust1!code) mycust1.MoveNext Loop 'End If End Sub Private Sub tr2(tt As Double) Set mycust2 = Nothing Set mycust2 = New Recordset mycust2.Open "select * from cust where ab=" & tt, cnn, adOpenStatic, adLockOptimistic Do While Not mycust2.EOF z = z + Val(mycust2!mony) Call tr(mycust2!code) mycust2.MoveNext Loop End Sub
