منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : تصميم شجرة حسابات
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3
بسم الله الرحمن الرحيم

أرفق  مشروع  فيه  2  فورم  .... بعد أن  عجزت  عن ترتيب  دليل  الحسابات  باترتيب  يأتي  كما يلي :
ت      رئيسي      فرعي        اسم  الحساب
  1        1              0             الإيرادات
 2         1              1              ضرائب
 3         1               2             ايرادات   متنوعة
4          2                0           النفقات
5           2               1            الرواتب والأجور 

وهكذا  الى   اربع  او  خمسة  حسابات  رئيسية  على  غرار  الأصول  والخصوم  والايرادات  والمصروفات  كما  في الدليل المحاسبي الموحد

عملت  فورم  2  ووضعت  فيه  tree view  وهناك  تكست  بوكس  للإدخال  والحفظ
ولكني  قليل  الإطلاع  بعمل  شجرة  حسابات   عليه  ارجو  مساعدتكم    ... علما  أن  قاعدة  البيانات  اكسس 2007
والجدول  الذي  يحفظ  فيه   اسمه  daleel 

شكرا  لتعاونكم  وأرفق  لكم  المشروع
السلام عليكم

انظر الموضوع التالي  قد تجد فيه ما تريد

http://vb4arb.com/vb/showthread.php?tid=...8%A7%D8%AA
(18-02-19, 06:06 PM)sendbad100 كتب : [ -> ]
السلام عليكم

انظر الموضوع التالي  قد تجد فيه ما تريد

http://vb4arb.com/vb/showthread.php?tid=14062&highlight=%D8%B4%D8%AC%D8%B1%D8%A9+%D8%A7%D9%84%D8%AD%D8%B3%D8%A7%D8%A8%D8%A7%D
شكرا  جزيلا  لكم  ولقد  تم  التطبيق 
لكن  تظهر  لي  الخطأ   المرفق   علما  استخدم  فجوال  2010
للرفغ برجاء الاجابة
معنى رسالة الخطأ إنك بتحاول تحويل حقل فاضي الى رقم 
تأكد من الحقول التي تتعامل معها
مرحبااا شباب ممكن مساعده
1- افتح جدول قاعدة البيانات و احذف دليل الحسابات .
2- اعمل مديول جديد في المشروع و امسح كل الذي كتبته من الاكواد السابقة و اكتب داخل المديول التالي :

PHP كود :
Module FillTreeViewXT
#Region "Load Tree View From Database"
 
   Dim nds As TreeNodeCollection
    Public Sub CreateTree
(ByVal TreeView1 As TreeViewByVal TreeViewRootName As String_
    ByVal DTable 
As DataTableByVal ColomnName As StringByVal ColType As String_
    ByVal ColID 
As StringByVal MainHeaderImageIndex As Integer)
 
       TreeView1.BeginUpdate()
 
       TreeView1.Nodes.Clear()
 
       Dim MainHeader As New TreeNode(TreeViewRootName)
 
       MainHeader.Tag 0
        MainHeader
.ImageIndex MainHeaderImageIndex
        MainHeader
.SelectedImageIndex MainHeader.ImageIndex
        TreeView1
.Nodes.Add(MainHeader)
 
       AddSubNode(MainHeaderDTableColomnNameColTypeColID)
 
       TreeView1.EndUpdate()
 
       TreeView1.ExpandAll()
 
       TreeView1.Select()
 
       FindNodeByText(TreeView1TreeViewRootName)
 
   End Sub
    Private Sub FindNodeByText
(ByVal MTree As TreeViewByVal Mvalue As String)
 
       MTree.ExpandAll()
 
       Dim Node As TreeNode MTree.Nodes.Item(0)
 
       While Not Node Is Nothing
            If Node
.Text.Contains(Mvalue.TrimThen
                Node
.BackColor Color.BurlyWood
                Node
.Checked True
                MTree
.SelectedNode Node
            Else
                Node
.BackColor Color.White
                Node
.Checked False
            End 
If
 
           Node Node.NextVisibleNode
        End 
While
 
   End Sub
    Private Sub AddSubNode
(ByVal Node As TreeNodeByVal DTable As DataTableByVal ColomnName As StringByVal ColType As StringByVal ColID As String)
 
       Dim dv1 As DataView DTable.DefaultView
        Dim strt 
As String String.Empty
 
       strt ColType " ="
 
       dv1.RowFilter strt CType(Node.TagInteger)
 
       For Each drLine As DataRowView In dv1
            Dim SubNode 
As New TreeNode(drLine(ColomnName).ToString)
 
           SubNode.Tag drLine(ColID).ToString
            SubNode
.ImageIndex Node.Level
            SubNode
.SelectedImageIndex SubNode.ImageIndex
            Node
.Nodes.Add(SubNode)
 
           If Not SubNode.Tag 0 Then
                AddSubNode
(SubNodeDTableColomnNameColTypeColID)
 
           End If
 
       Next
    End Sub
#End Region
End Module 


3 - افتح الفورم الحدث لود وضع به الكود التالي :

PHP كود :
   Private Sub Form1_Load(sender As ObjectAs EventArgsHandles MyBase.Load
        Dim DT 
As New DataTable
        DT
.Clear()
 
       Dim Conn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data source=|DataDirectory|\Treedb.accdb;")
 
       If Conn.State ConnectionState.Closed Then Conn.Open()
 
       Dim sql As String "SELECT RootID, RootName, ParentID, RootLevel, RootID & ' : ' & RootName as MyRoot FROM tblRoots Order By RootID"
 
       Dim da As New OleDb.OleDbDataAdapter(sqlConn)
 
       da.Fill(DT)
 
       CreateTree(TreeView1"دليل الحسابات"DT"MyRoot""ParentID""RootID"0)
 
   End Sub 


4 - قبل التشغيل ضع ImageList على الفورم و ضع به من 3 الى 10 صور ثم شغل المشروع و باذن الله سيعمل .
مرحباً اخى الحبيب يمكنك مراجعة الرابط التالى
http://vb4arb.com/vb/showthread.php?tid=26059

تحياتى لك
وتمنياتى لك التوفيق
اخي العزيز الموضوع شيق و لكن كثرة الجداول حسب الأبناء يضيع المبرمج جدول واحد كافي به جميع الإباء و الأبناء مثال الدليل المحاسبي الموحد مؤلف من 486 سجل و أكثر . 
أبناء أبناء متعددين الطريقة التي وضعتها اسهل للمبرمج مع إضافة حقول المدين والدائن و الرصيد لكل سجل و هو حاصل مجموع العمليات المحاسبة على السجل المعين في دفتر اليومية .
هكذا تبنا الشجرة المحاسبية و بالطبع سيتم وضع حقل من نوع Boolean لعرض الحسابات المفضلة في صفحة بداية البرنامج كالصندوق مثلا او زبون معين لمعرفة رصيده دون العودة الى كشف الحساب الخاص به و عند الضغط عليه يعطيك الكشف المحاسبي الخاص به و تقبل مني خالص الشكر أخوك الصغير عاصم .
(20-02-19, 10:35 PM)asemshahen5 كتب : [ -> ]اخي العزيز الموضوع شيق و لكن كثرة الجداول حسب الأبناء يضيع المبرمج جدول واحد كافي به جميع الإباء و الأبناء مثال الدليل المحاسبي الموحد مؤلف من 486 سجل و أكثر . 
أبناء أبناء متعددين الطريقة التي وضعتها اسهل للمبرمج مع إضافة حقول المدين والدائن و الرصيد لكل سجل و هو حاصل مجموع العمليات المحاسبة على السجل المعين في دفتر اليومية .
هكذا تبنا الشجرة المحاسبية و بالطبع سيتم وضع حقل من نوع Boolean لعرض الحسابات المفضلة في صفحة بداية البرنامج كالصندوق مثلا او زبون معين لمعرفة رصيده دون العودة الى كشف الحساب الخاص به و عند الضغط عليه يعطيك الكشف المحاسبي الخاص به و تقبل مني خالص الشكر أخوك الصغير عاصم .


نعم اخى asemshahen5
كلامك فى محله تماماً ولكن ليس هنا المشكلة
لان الشرح موضح كيفية بساطة الامر وبعد اكتساب الخبرة فيمكن دمج جميع الجداول الفرعية للام
لتكون على شكل جدول واحد فقط وتحويل الارقام من 1 و 2 و 3 خاصة الفرعي سيكون عبارة عن 101 201 301 .. الخ

فالامر هو كيفية تبسيط الامر لمن يتعلم فكيفية تكوير الفكرة لتصبح بالصورة الاكثر دقة واحترافية

فكلما تم تصعيب الامر فكلما كان المتعلم يقوم بالنسخ واللصق فقط دون دراية ماذا يعمل
لانه لم تصل له الفكرة وبساطتها من البداية فسيعتمد دائماً باحتفاظ الاكواد لاستخدامها كا نسخ ولصق فقط

خلاف اذا كنا نريد التحدث على التكوين الصح فلا يهم عدد الجداول المستخدمة فى قاعدة البيانات
ولكن كيفية عدم تمييز مسميتها لمسمى الجدول و الاعمدة بالداخل وان تكون الجدول غير مرج بها المسميات وان تكون شبه مشفرة
كذلك اذا كان عدد الجداول وليكن 100 فبمجرد كود استعلام بسيط يتحول الـ 100 جدول الى جدول واحد فقط بدون ادني مشكلة ودون تسبب اى ضغط

الامور كلها تعتمد على مفاهيم الاساس لتتمكن من التعلاب والتعامل مع الامور كما تشاء

لذلك احب دائماً تبسيط الامر لتصل الفكرة كاملاً الى الجميع
من ثم اقوم بالمراحل التالية فى كيفية تطويرها لتكون بصورة اكثر دقة

تحياتى لك
وتمنياتى لك التوفيق
الصفحات : 1 2 3