graysky81699 قام بنشر نوفمبر 18, 2015 قام بنشر نوفمبر 18, 2015 السلام عليكم اخواني يرجى مساعدتي في حساب رصيد مجموعة حسابات في شجرة الحسابات عند الضغط عليها تمكنت من انجاز معظم العمل ولكني توقفت عند بناء استعلام يظهر رصيد مجموعة حسابات ضمن الشجرة Acc1 فمثلا عند الضغط على الموجودات أريد حساب كامل أرصدة الموجودات ضمن النموذج ولكم جزيل الشكر Tree.rar
jjafferr قام بنشر نوفمبر 19, 2015 قام بنشر نوفمبر 19, 2015 السلام عليكم أخي رجاء تعبئة برنامجك ببيانات مميزه ، ثم اخباري: اي نموذج استعمل اين انقر ما النتيجة التي تريدها (وتعطيني مثال او مثالين بعملية الجمع مع ارقام من قاعدة البيانات حتى استطيع المقارنة) جعفر
graysky81699 قام بنشر نوفمبر 19, 2015 الكاتب قام بنشر نوفمبر 19, 2015 استعمل نموذج tree وانقر على الموجودات مثلا
jjafferr قام بنشر نوفمبر 19, 2015 قام بنشر نوفمبر 19, 2015 أخي الفاضل ، الظاهر أن وقتك جدا ثمين وما عندك حتى وقت لتساعدنا علشان نساعدك!!! شكرا
graysky81699 قام بنشر نوفمبر 19, 2015 الكاتب قام بنشر نوفمبر 19, 2015 اخي البرنامج يحوي بيانات وامثلة وسؤالي واضح اريد عند النقر على الموجودات مثلا اظهار رضيدها
graysky81699 قام بنشر نوفمبر 19, 2015 الكاتب قام بنشر نوفمبر 19, 2015 تمت اضافة أمثلة أكثر والمطلوب هو صناعةاستعلام يظهر أرصدة مجموعات الحسابات مهما كبرت شجرة الحسابات أي الأموال الجاهزة يجب أن تظهر 30000 الموجودات المتداولة يجب أن تظهر 108750 الموجودات 108750 وهكذا Tree.rar
jjafferr قام بنشر نوفمبر 20, 2015 قام بنشر نوفمبر 20, 2015 شكرا على التوضيح انا مب محاسب ، فصدقني ما اعرف شئ عن برامج المحاسبة وكيفية عملها!! لوسمحت تخبرني: لما انقر على الموجودات ، او الموجودات المتداولة ، في نموذج Tree ، اي جدول ، واي الحقول اللي فيها المعلومات المطلوبة ، يعني كيف توصلت للرقم 108750 ؟ سبب سؤالي هو ، على حسب جوابك اعمل لك البرمجة ان شاء الله جعفر
graysky81699 قام بنشر نوفمبر 20, 2015 الكاتب قام بنشر نوفمبر 20, 2015 (معدل) tran في جدول debit credit هذا الرقم وصلت له بجمع قيم Account_idمن خلال حقل Accounts وهو مرتبط بجدول عبارة عن شجرة وليس حساب منفصل Accounts جدول Father الحساب له مجموعة حسابات أب له محددة في خانة وقد يكون له جد أو أعلى من ذلك ففي الشجرة في الصورة الصندوق الأول أبوه هو الأموال الجاهزة وجده الموجودات المتداولة ووالد جده الموجودات حساب المهندس محمود والمهندس خالد والدهم الموجودات المتداولة وجدهم الموجودات فالموجودات المتداولة مثلا رصيدها 108750 لأن مجموع رصيد أبناءه وأحفادة هو هذا الرقم والمطلوب: أريد استعلام يجمع أرصدة الحسابات الفرعية لكل مجموعة حسابات مهما كانت متفرعة للأسفل كما هو موضح في الشجرة مع قبول فائق الشكر تم تعديل نوفمبر 20, 2015 بواسطه graysky81699
رمهان قام بنشر نوفمبر 21, 2015 قام بنشر نوفمبر 21, 2015 اخي الكريم سؤالك هو شبح المبرمجين ومنوة المحاسبين ! ولكن قبل مشاركة اخي جعفر هناك ملاحظة : وجود العمود c&n في الجدول وهو يمكن ان يكون محسوب ويستغنى عنه ولتوفير جهد كبير في الادخال ! استفسار : هل عمود code هو المرجع لتكويد الحسابات ولن يكون فارغ او به خطأ في التكويد ؟ مع العلم انني وجدتك معتمدا على id وال father في تعبئة التري ! بمعنى لو عمود code سيكون دقيقا في التكويد ساستخدمه لما طلبت وبطريقة سهلة جدا بل مرنة لمعرفة اجمالي ابناء كل حساب ! لاحظ قلت لك اجمالي لانه اعتقد هذا ماتقصده في كلمة رصيد ! اما رصيد الحساب فهذه قصة اخرى ستظهر لك لاحقا وبناء على الحركات الدائنة والمدينة لكل حساب بل مايزيدها تعقيدا ان لديك تعدد عملات والرصيد سيظهر بعملة واحدة ! وتعقيدا عندما يكون هناك عدة سنوات ! نرجع للموضوع وبالتحديد حول الملاحظة والاستفسار ! تحياتي
graysky81699 قام بنشر نوفمبر 21, 2015 الكاتب قام بنشر نوفمبر 21, 2015 Idربط الحسابات يتم عن طريق عمود ممكن ان يتغير حسب موقع الحساب في الشجرة Code وذلك لان اما بالنسبة لكلمة رصيد ام اجمالي فطبعا اقصد اجمالي مع جزيل الشكر للجميع
jjafferr قام بنشر نوفمبر 21, 2015 قام بنشر نوفمبر 21, 2015 السلام عليكم 18 ساعات مضت, رمهان said: سؤالك هو شبح المبرمجين . ايه والله ، صار لي من امس وانا احاول فيه ، لكن الحمدلله النتيجة: والكود: Option Compare Database Option Explicit Public Add_Them As String Private Sub TreeView1_nodeClick(ByVal node As Object) On Error GoTo err_TreeView1_nodeClick Dim Pos As Integer If node.Index > 1 Then Dim tt As String tt = Split(node.Key, ";")(0) TempVars.add "Acc1", Mid(tt, 2) ' DoCmd.OpenForm "acc1", acNormal End If Pos = InStr(1, TreeView1.SelectedItem, "..") - 1 If Pos > 0 Then If Left(TreeView1.SelectedItem, Pos) = "1299999" Then ' DoCmd.OpenForm "Form1" End If End If Dim Parent_and_Children As String Dim mySQL As String Dim rst As DAO.Recordset Parent_and_Children = node.Key 'Call TraverseChildren(node) Add_Them = "" 'get the insert the Parent node, and ask for the Childern nodes Parent_and_Children = Add_Them & ";" & node.Key & ";" & TraverseChildren(node) 'Remove the 1st A, the the node key is something like this: A385 Parent_and_Children = Mid(Parent_and_Children, 2) 'Remove the extra ; Parent_and_Children = Replace(Parent_and_Children, ";;", ";") 'Remove the "A"s Parent_and_Children = Replace(Parent_and_Children, "A", "") 'prepare the results a Criteria for the WHERE condition Parent_and_Children = "[Account_ID] = " & Replace(Parent_and_Children, ";", " Or [Account_ID] = ") 'Debug.Print Parent_and_Children 'do a Recordset to get the results mySQL = "SELECT Sum(nz([CREDIT],0)) AS C, Sum(nz([DEBIT],0)) AS D, Sum(nz([CREDIT],0)-nz([DEBIT],0)) AS B" mySQL = mySQL & " FROM Trans" mySQL = mySQL & " WHERE " & Parent_and_Children 'Debug.Print mySQL Set rst = CurrentDb.OpenRecordset(mySQL) MsgBox "Credit=" & rst!C & vbCrLf & _ "Debit=" & rst!D & vbCrLf & _ "Balance=" & rst!B Exit Sub On Error Resume Next Debug.Print "node.Child; " & node.Child Debug.Print "node.Children; " & node.Children Debug.Print "node.Expanded; " & node.Expanded Debug.Print "node.FirstSibling; " & node.FirstSibling Debug.Print "node.FullPath; " & node.FullPath Debug.Print "node.Index; " & node.Index Debug.Print "node.Key; " & node.Key Debug.Print "node.LastSibling; " & node.LastSibling Debug.Print "node.Next; " & node.Next Debug.Print "node.Parent; " & node.Parent Debug.Print "node.Previous; " & node.Previous Debug.Print "node.Root; " & node.Root Debug.Print "node.Selected; " & node.Selected Debug.Print "node.Sorted; " & node.Sorted Debug.Print "node.Tag; " & node.Tag Debug.Print "node.Text; " & node.Text Debug.Print "----------------------" err_TreeView1_nodeClick: If Err.Number = 3075 Then 'only one condition, remove the extra bits Parent_and_Children = Replace(Parent_and_Children, " Or [Account_ID] = ", "") mySQL = "SELECT Sum(nz([CREDIT],0)) AS C, Sum(nz([DEBIT],0)) AS D, Sum(nz([CREDIT],0)-nz([DEBIT],0)) AS B" mySQL = mySQL & " FROM Trans" mySQL = mySQL & " WHERE " & Parent_and_Children 'Debug.Print mySQL Set rst = CurrentDb.OpenRecordset(mySQL) Resume Next Else MsgBox Err.Number & vbCrLf & Err.Description End If End Sub Function TraverseChildren(node As MSComctlLib.node) ' 'from http://www.access-programmers.co.uk/forums/showpost.php?p=589097&postcount=5 'modified by jjafferr 21-11-2015 ' ' writes the text of each child node to the debug window ' or a message if no child nodes exist Dim n As MSComctlLib.node Dim i As Integer 'using the 'Child' property of the node, get the first child Set n = node.Child 'traverse the children using the 'Children' property of the node For i = 1 To node.Children 'display the text of the child node 'Debug.Print n.Key & vbTab & n.Text Add_Them = Add_Them & ";" & n.Key 'to affect recursion, uncomment this line TraverseChildren n 'using the 'Next' property of the current child, get the next child Set n = n.Next Next i 'indicate no children If i = 0 Then Debug.Print "Node has zero children" TraverseChildren = Add_Them End Function . انا تركت لك في الكود بعض الاوامر اللي قد تفيدك في عملية الشجرة ، واعتقد بإمكانك ان تستعمل النتائج في المكان اللي تريد ، فانا عملت لك النتيجة على هيئة Recordset: Set rst = CurrentDb.OpenRecordset(mySQL) MsgBox "Credit=" & rst!C & vbCrLf & _ "Debit=" & rst!D & vbCrLf & _ "Balance=" & rst!B جعفر 273.1.Tree.accdb.zip
رمهان قام بنشر نوفمبر 22, 2015 قام بنشر نوفمبر 22, 2015 صباح الورد اخوي جعفر Private Sub TreeView1_nodeClick(ByVal node As Object) On Error GoTo 10: MsgBox (CurrentDb.OpenRecordset("select sum(nz(credit,0))-sum(nz(debit,0)) from trans where account_id in(" & CurrentProject.AccessConnection.Execute("select id from accounts where code like '" & Left(node.Text, InStr(1, node.Text, ".") - 1) & "%'").GetString(, , , ",") & ")")(0)) 10: End Sub طبعا هي سطر واحد ولكن تم اضافة صيد الخطأ تحسينا ! وللعلم وضعت نفس معادلة اخوي جعفر مع التاكد بان المحاسبين حيزعلو ! فالرصيد هو طرح الاصغر من الاكبر ويبقى الفاصل هو طبيعة الحساب اما دائن او مدين ! تحياتي :: مبرمجين ومحاسبين واعضاء
graysky81699 قام بنشر نوفمبر 22, 2015 الكاتب قام بنشر نوفمبر 22, 2015 ما شاء الله جهد طيب وجميل جدا Accounts الى حقل متعدد القيم في جدول Parent_and_Children هل يمكننا اسناد قيمة المتغير Sons وليكن حقل باسم وبذلك تكون قد أتممت معروفك جزاك الله خيرا 273.1.Tree.rar
jjafferr قام بنشر نوفمبر 22, 2015 قام بنشر نوفمبر 22, 2015 شكرا جزيلا أخي الكريم على هذه اللفته الجميلة منك اما بالنسبة لطلبك ، فتلاحظ اننا عملنا استعلام بهذه الاسطر: mySQL = "SELECT Sum(nz([CREDIT],0)) AS C, Sum(nz([DEBIT],0)) AS D, Sum(nz([CREDIT],0)-nz([DEBIT],0)) AS B" mySQL = mySQL & " FROM Trans" mySQL = mySQL & " WHERE " & Parent_and_Children . وعلى اساس حاجة الاستعلام ، ذللنا Parent_and_Children وجعلنا نتيجتها تخدم الاستعلام بهذه الخطوات: 'Remove the 1st A, the the node key is something like this: A385 Parent_and_Children = Mid(Parent_and_Children, 2) 'Remove the extra ; Parent_and_Children = Replace(Parent_and_Children, ";;", ";") 'Remove the "A"s Parent_and_Children = Replace(Parent_and_Children, "A", "") 'prepare the results a Criteria for the WHERE condition Parent_and_Children = "[Account_ID] = " & Replace(Parent_and_Children, ";", " Or [Account_ID] = ") . فنعم ، يمكنك تغيير هذا الاستعلام الى ما شئت ، وعليه يجب تغيير Parent_and_Children لتتناسب قيمه مع المطلوب جعفر
jjafferr قام بنشر نوفمبر 22, 2015 قام بنشر نوفمبر 22, 2015 وعلشان اسهل لك عملاستعلامات جديدة وطرق لعملها ، عملت لك استعلام خارجي لا علاقة له بالكود ، ولكنه يأخذ شروطه من وحدة نمطية ، فبهذه الطريقة تقدر تعمل اي استعلام جديد: . وعملت تقرير على اساس هذا الاستعلام ، فاصبحت النتيجة: . والكود اصبح: Option Compare Database Option Explicit Public Add_Them As String Private Sub TreeView1_nodeClick(ByVal node As Object) On Error GoTo err_TreeView1_nodeClick Dim Pos As Integer If node.Index > 1 Then Dim tt As String tt = Split(node.Key, ";")(0) TempVars.add "Acc1", Mid(tt, 2) ' DoCmd.OpenForm "acc1", acNormal End If Pos = InStr(1, TreeView1.SelectedItem, "..") - 1 If Pos > 0 Then If Left(TreeView1.SelectedItem, Pos) = "1299999" Then ' DoCmd.OpenForm "Form1" End If End If Dim Parent_and_Children As String Dim mySQL As String Dim rst As DAO.Recordset Parent_and_Children = node.Key Add_Them = "" 'get the insert the Parent node, and ask for the Childern nodes Parent_and_Children = Add_Them & ";" & node.Key & ";" & TraverseChildren(node) 'Remove the 1st A, the the node key is something like this: A385 Parent_and_Children = Mid(Parent_and_Children, 2) 'Remove the extra ; Parent_and_Children = Replace(Parent_and_Children, ";;", ";") 'Remove the "A"s Parent_and_Children = Replace(Parent_and_Children, "A", "") The_Value = Parent_and_Children '1 'prepare the results a Criteria for the WHERE condition ' Parent_and_Children = "[Account_ID] = " & Replace(Parent_and_Children, ";", " Or [Account_ID] = ") 'Debug.Print Parent_and_Children 'do a Recordset to get the results ' mySQL = "SELECT Sum(nz([CREDIT],0)) AS C, Sum(nz([DEBIT],0)) AS D, Sum(nz([CREDIT],0)-nz([DEBIT],0)) AS B" ' mySQL = mySQL & " FROM Trans" ' mySQL = mySQL & " WHERE " & Parent_and_Children 'Debug.Print mySQL ' Set rst = CurrentDb.OpenRecordset(mySQL) ' MsgBox "Credit=" & rst!C & vbCrLf & _ "Debit=" & rst!D & vbCrLf & _ "Balance=" & rst!B 'OR '2 The_Value = Replace(The_Value, ";", ",") DoCmd.OpenReport "rpt_Sum_Children", acViewPreview Exit Sub On Error Resume Next Debug.Print "node.Child; " & node.Child Debug.Print "node.Children; " & node.Children Debug.Print "node.Expanded; " & node.Expanded Debug.Print "node.FirstSibling; " & node.FirstSibling Debug.Print "node.FullPath; " & node.FullPath Debug.Print "node.Index; " & node.Index Debug.Print "node.Key; " & node.Key Debug.Print "node.LastSibling; " & node.LastSibling Debug.Print "node.Next; " & node.Next Debug.Print "node.Parent; " & node.Parent Debug.Print "node.Previous; " & node.Previous Debug.Print "node.Root; " & node.Root Debug.Print "node.Selected; " & node.Selected Debug.Print "node.Sorted; " & node.Sorted Debug.Print "node.Tag; " & node.Tag Debug.Print "node.Text; " & node.Text Debug.Print "----------------------" err_TreeView1_nodeClick: If Err.Number = 3075 Then 'only one condition, remove the extra bits Parent_and_Children = Replace(Parent_and_Children, " Or [Account_ID] = ", "") mySQL = "SELECT Sum(nz([CREDIT],0)) AS C, Sum(nz([DEBIT],0)) AS D, Sum(nz([CREDIT],0)-nz([DEBIT],0)) AS B" mySQL = mySQL & " FROM Trans" mySQL = mySQL & " WHERE " & Parent_and_Children 'Debug.Print mySQL Set rst = CurrentDb.OpenRecordset(mySQL) Resume Next Else MsgBox Err.Number & vbCrLf & Err.Description End If End Sub Function TraverseChildren(node As MSComctlLib.node) ' 'from http://www.access-programmers.co.uk/forums/showpost.php?p=589097&postcount=5 'modified by jjafferr 21-11-2015 ' ' writes the text of each child node to the debug window ' or a message if no child nodes exist Dim n As MSComctlLib.node Dim i As Integer 'using the 'Child' property of the node, get the first child Set n = node.Child 'traverse the children using the 'Children' property of the node For i = 1 To node.Children 'display the text of the child node 'Debug.Print n.Key & vbTab & n.Text Add_Them = Add_Them & ";" & n.Key 'to affect recursion, uncomment this line TraverseChildren n 'using the 'Next' property of the current child, get the next child Set n = n.Next Next i 'indicate no children If i = 0 Then Debug.Print "Node has zero children" TraverseChildren = Add_Them End Function . والوحدة النمطية التي ترسل الشروط للإستعلام: Option Compare Database Public The_Value As String Function Get_Qry_Criteria() Get_Qry_Criteria = The_Value End Function . جعفر 273.2.Tree.accdb.zip
رمهان قام بنشر نوفمبر 22, 2015 قام بنشر نوفمبر 22, 2015 اخينا graysky هل جربت سطر رمهان ؟ جرب مش حتخسر حاجة ! هو عصارة خبرة سنين ! واخذ مني وقت اركبه بهذه الطريقة ! هو صح سطر واحد ولكن به افكار كثيرة ومعلومات قيمة جدا ! المشكلة مهما قدمنا يبقى سحر جعفر الاقوى ! اخوي جعفر: ممكن تقول لي كيف ادرج الفيسس ؟ مش عارف بعد التطويرات الجديدة ! تحياتي
jjafferr قام بنشر نوفمبر 22, 2015 قام بنشر نوفمبر 22, 2015 وعليكم السلام 54 دقائق مضت, رمهان said: هل جربت سطر رمهان ؟ . نعم انا جربته ، وناوي اعمل له عملية تفكيك علشان اوصل لمعلوماته القيمة جدا واللي ما اعرف حتى كيف اتهجّى كلماته 56 دقائق مضت, رمهان said: المشكلة مهما قدمنا يبقى سحر جعفر الاقوى ! . انا مسافر الاربعاء ان شاء الله ، وحتكون لكم وحشه 58 دقائق مضت, رمهان said: ممكن تقول لي كيف ادرج الفيسس ؟ . تفضل ، هذه الايقونه: . على فكرة ، التحديث الجديد جيد ، ولكن عندي معاه بعض المشاكل ، واحد الشباب ما كان يقدر يرد على المشاركات اصلا!! جعفر
رمهان قام بنشر نوفمبر 26, 2015 قام بنشر نوفمبر 26, 2015 في ٢٢/١١/٢٠١٥ ٤:٥١:٣٥, jjafferr said: وعليكم السلام . نعم انا جربته ، وناوي اعمل له عملية تفكيك علشان اوصل لمعلوماته القيمة جدا واللي ما اعرف حتى كيف اتهجّى كلماته تفضل ، هذه الايقونه: . على فكرة ، التحديث الجديد جيد ، ولكن عندي معاه بعض المشاكل ، واحد الشباب ما كان يقدر يرد على المشاركات اصلا!! جعفر وحتوحشنا اكثر ! وسنفتقدك ! وندعو لك بالتوفيق ! وغريبه كانت الايقونة لدي لخيار الكود اما الان تمام
Oday Algohfah قام بنشر يناير 30, 2021 قام بنشر يناير 30, 2021 اخي العزيز ما بيقدر يفتح عندي لان نظام الوتدوز حقي 32 بت وليس 64 بت ماهو الحل ..!!!
nizarart قام بنشر مارس 31, 2021 قام بنشر مارس 31, 2021 On 11/21/2015 at 10:01 PM, jjafferr said: 273.1.Tree.accdb.zip شكرا
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.