الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مساعدة في عرض بيانات في داتا جريد

بدأه ابو رفيق في 25 فبراير 2011 · 9 رد · 1,984 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

تحية طيبة لأعضاء المنتدى

عندي مشكلة في برنامج بدأت فيه وهو برنامج محاسبة

أنا الحمد لله عملت شجرة حسابات مستعينا بالأكواد الموجودة في الموقع والحمد لله تم عمل الشجرة والعرض من قاعدة البيانات والحفظ فيها

المشكلة محتاج جملة استعملام أقدر من خلالها استعراض محتوايات الحسابات بشكل مستلسل

للتوضيح الشجرة كما في المرفقات

الجدول مصمم كالتالي الشجرة بتعرض من خلال العلاقة بين parent و level

account_name --- parent --- level --- id

1 --- 0 --- 1 --- دليل الحسابات

2 --- 2 --- 1 --- الأصول

3 --- 3 --- 2 --- الأصول طويلة الأجل

4 --- 4 --- 3 --- أراضي

5 --- 5 --- 4 ---- أراضي للاستغلال الزراعي -محاصيل

6 --- 6 --- 4 --- أراضي للاستغلال الزراعي - حدائق وبساتين

7 --- 7 --- 4 --- أراضي للاستغلال الصناعي - مناجم ومقالع

8 --- 8 --- 4 --- أراضي فضاء

9 --- 9 ---4 --- أراضي فضاء للتخزين

10 --- 10 --- 3 --- مباني وإنشاءات ومرافق وطرق

11 --- 11 --- 10 --- مباني نشاط إنتاجي

12 --- 12 --- 10 --- آبار

13 --- 13 --- 10 --- مباني خدمات ومرافق إنتاج

14 --- 14 --- 2 --- مشروعات تحت التنفيذ

15 --- 15 --- 14 --- تكوين استثماري

16 --- 16 --- 14 --- اعتمادات مستندية وسلف لشراء الأصول طويلة الأجل

عندي بعض الأسئلة

أولا

من خلال الصورة المرفقة

محتاج اعرض في داتا جريد بنفس الترتيب الموجود في الشجرة مرتبة لأن المشكلة إن المعروض في الشجرة ليس أحيانا بنفس الترتيب الموجود في الجدول

ثانيا

أريد لما أنقر على الحساب 1123 يظهر الحساب الأصول 1 فقطلأني محتاج ياخد منه بعض الخصائص مثل نوع الحساب هكذا

الموضوع كبير بس مفيد جدا لي للآخرين ممكن أن تكون قابلتهم نفس المشكلة

انتظر الرد والتفاعل من الأعضاء

post-221207-069248700 1298652318_thumb.j

المرفقات
1.JPG

تم تعديل هذه المشاركة بواسطة ابو رفيق في 25 فبراير 2011 في 20:24

:)  :)  :)  شكرا لكل من علمني حرفا :)  :)  :)


#2

أخي عملها في داتا جريد لن يكون مجدي .. والسبب طريقة التركيب ..

ولكن بما انك تريد الوصول الى الحساب الرئيسي للحساب رقم 1123 يمكنك استخدام اكثر من طريقة للحصول على حساب الاصل .

اولا .

1123 هو الرقم الفعلي للحساب (مباني خدمات ومرافق انتاج )

112 هو الرقم الفعلي للحساب (مباني وانشاءات ومرافق وطرق )

11 هو رقم الحساب الفعلي ( الاصول طويلة الاجل ) .

1 هو رقم الحساب الفعلي ( الاصول )

لو تلاحظ هنا لو اننا قرآنا الرقم من اليسار لليمين سنجد الترقيم العكسي للحسابات .

ويمكننا قراءة الرقم الاول من الحساب ليعطينا الحساب الام الأعلى .

يمكن قراءة الرقم بأكثر من طريقة أول هذه الطرق

استخدام الدالة Mid وهي تقرأ جزء من النص .

مثال

a=mid(accno,1,1)

سنلاحظ هنا اننا من خلال الكود أعلاه نستخدم الدالة Mid ونمرر لها 3 قيم . رقم الحساب.. نقطة البدء .. الطول المطلوب .

وهنا قلنا له ابدأ من اول رقم .. واعطينا فقط رقم 1 .. وبالتالي العائد سيكون الرقم 1 وهو رقم حساب الاوصل .

a=mid(accno,1,2)

لو قلنا له اعطينا رقمين . سنحصل على الرقم 11 و هو رقم الحساب الفرعي الاول .

a=mid(accno,1,3)

سيعطينا 3 ارقام وهي 112 وهو الحساب الاب للحساب الحالي .

يمكننا ايضا استخدام الدالة left وهي تقرأ ايضا جزء من النص اعتباراً من اليسار .

ويمكن استخدامها بالطريقة التالية

a=left(accno,length)

بهذه الطريقة نستطيع الحصول الى اول رقم اول رقمين او اول 3 ارقام

a=left(acc,1)

أتمنى أن أكون أفدتك .

تحياتي

OMANI FOR EVER

-------------------------------------------------

post-12787-12780191801974.jpg

-------------------------------------------------

#3
omani كتب:

أخي عملها في داتا جريد لن يكون مجدي .. والسبب طريقة التركيب ..

ولكن بما انك تريد الوصول الى الحساب الرئيسي للحساب رقم 1123 يمكنك استخدام اكثر من طريقة للحصول على حساب الاصل .

اولا .

1123 هو الرقم الفعلي للحساب (مباني خدمات ومرافق انتاج )

112 هو الرقم الفعلي للحساب (مباني وانشاءات ومرافق وطرق )

11 هو رقم الحساب الفعلي ( الاصول طويلة الاجل ) .

1 هو رقم الحساب الفعلي ( الاصول )

لو تلاحظ هنا لو اننا قرآنا الرقم من اليسار لليمين سنجد الترقيم العكسي للحسابات .

ويمكننا قراءة الرقم الاول من الحساب ليعطينا الحساب الام الأعلى .

يمكن قراءة الرقم بأكثر من طريقة أول هذه الطرق

الأخ

استخدام الدالة Mid وهي تقرأ جزء من النص .

مثال

a=mid(accno,1,1)

سنلاحظ هنا اننا من خلال الكود أعلاه نستخدم الدالة Mid ونمرر لها 3 قيم . رقم الحساب.. نقطة البدء .. الطول المطلوب .

وهنا قلنا له ابدأ من اول رقم .. واعطينا فقط رقم 1 .. وبالتالي العائد سيكون الرقم 1 وهو رقم حساب الاوصل .

a=mid(accno,1,2)

لو قلنا له اعطينا رقمين . سنحصل على الرقم 11 و هو رقم الحساب الفرعي الاول .

a=mid(accno,1,3)

سيعطينا 3 ارقام وهي 112 وهو الحساب الاب للحساب الحالي .

يمكننا ايضا استخدام الدالة left وهي تقرأ ايضا جزء من النص اعتباراً من اليسار .

ويمكن استخدامها بالطريقة التالية

a=left(accno,length)

بهذه الطريقة نستطيع الحصول الى اول رقم اول رقمين او اول 3 ارقام

a=left(acc,1)

أتمنى أن أكون أفدتك .

تحياتي

الأخ عماني جزاك الله خير على التفاعل

وانا متابع مشاركات حضرتك ومعجب بيها ونفع بعلمك

بالنسيبة لرد حضرتك ممكن في حالة لو ألزمت الشخص المحاسب بتكويد محدد وأعتقد ده مش مقبول منطقي والتكويد للحسابات بيكون مختلف من شخل لآخر

ثانيا أنا لفت نظري في رد حضرتك ( أخي عملها في داتا جريد لن يكون مجدي .. والسبب طريقة التركيب .. )

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

للتوضيح أنا استخدمت الكو د الآتي في الحفظ

                On Error Resume Next
                Dim oNodex1 As node
                Dim sKey1 As String
                Dim iIndex1 As Integer

                On Error GoTo myErr1
                iIndex1 = TreeView1.SelectedItem.Index 'Check to see if a Node is selected
                sKey1 = GetNextKey() ' Get a key for the new Node
                Set oNodex1 = TreeView1.Nodes.Add(iIndex1, tvwChild, sKey1, Text4.Text)
                TreeView1.SelectedItem = oNodex1
                TreeView1.DropHighlight = Nothing
                TreeView1.DropHighlight = oNodex1
                'oNodex1.EnsureVisible

                On Error Resume Next
                RS.Close
                RS.Open "A_Account_info", DB, adOpenStatic, adLockPessimistic
                RS.AddNew
                                RS.Fields("account_L") = Val(sKey1)
                RS.Fields("account_from_L") = iIndex1
                RS.Fields("account_date") = Text5.Text
                RS.Fields("account_code") = Text3.Text
                RS.Fields("account_name") = Trim(Text4.Text)
                RS.Fields("account_notes") = Trim(Text6.Text)
                RS.Fields("account_type") = Co2.Text
                RS.Fields("account_raseed") = "0"
                RS.Fields("acouunt_madeen") = "0"
                RS.Fields("account_daen") = "0"
                RS.Update
                RS.Close
                                                           myErr1:

تم تعديل هذه المشاركة بواسطة ابو رفيق في 25 فبراير 2011 في 21:08

:)  :)  :)  شكرا لكل من علمني حرفا :)  :)  :)


#4

اسف اخي الكريم .. انا فهمت خطأ في البداية .. كنت اعتقد انك تريد اظهار البيانات في الداتا جريد .. بنفس الاسلوب الذي يظهر في الشجرة .

عموماً يمكنك استخدام shape و append لانشاء بيانات هيكلية للتقرير .

تحياتي

OMANI FOR EVER

-------------------------------------------------

post-12787-12780191801974.jpg

-------------------------------------------------

#5
omani كتب:

اسف اخي الكريم .. انا فهمت خطأ في البداية .. كنت اعتقد انك تريد اظهار البيانات في الداتا جريد .. بنفس الاسلوب الذي يظهر في الشجرة .

عموماً يمكنك استخدام shape و append لانشاء بيانات هيكلية للتقرير .

تحياتي

الأخ omani

اسمح لي فهمك لم يكن خطأ

انا فعلا محتاج اعرض البيانات في داتا جريد مثل الترتيب الموجود في الشجرة ولكن مش عارف أبدأ من أي نقطة يعني مثلا في الشجرة

ممكن يكون رقم id الخاص باسم الموظف في الجدول في آخر الجدول ولكن في الشجرة يكون في وسط الشجرة يعني كل ما أطلبه عرض في عمود واحد بنفس الترتيب داخل الشجرة

هذا ما اطلبه واسمح لي ان أثقل عليك وتوضح لي ما هي البيانات الازمة لحفظ الجدول اثناء حفظ الحساب لتسهيل عرض الداتا جريد أنا فعلا فكرت فيها كثير ولكن لم أعثر على الفكرة حتى الآن اتمنى تساعدني في فهم الفكرة الساسية لحفظ بيانات الحساب وشكرا

:)  :)  :)  شكرا لكل من علمني حرفا :)  :)  :)


#6
ابو رفيق كتب:

الأخ omani

اسمح لي فهمك لم يكن خطأ

انا فعلا محتاج اعرض البيانات في داتا جريد مثل الترتيب الموجود في الشجرة ولكن مش عارف أبدأ من أي نقطة يعني مثلا في الشجرة

ممكن يكون رقم id الخاص باسم الموظف في الجدول في آخر الجدول ولكن في الشجرة يكون في وسط الشجرة يعني كل ما أطلبه عرض في عمود واحد بنفس الترتيب داخل الشجرة

هذا ما اطلبه واسمح لي ان أثقل عليك وتوضح لي ما هي البيانات الازمة لحفظ الجدول اثناء حفظ الحساب لتسهيل عرض الداتا جريد أنا فعلا فكرت فيها كثير ولكن لم أعثر على الفكرة حتى الآن اتمنى تساعدني في فهم الفكرة الساسية لحفظ بيانات الحساب وشكرا

اعددت لك مثال .واتمنى ان يفيدك ..

ولكن يبدو ان هناك مشكلة في نظام رفع الملفات .

تجده هنا .

http://uploading.com...961d62/ABC.rar/

تحياتي

ABC.rar

تم تعديل هذه المشاركة بواسطة omani في 25 فبراير 2011 في 23:07

OMANI FOR EVER

-------------------------------------------------

post-12787-12780191801974.jpg

-------------------------------------------------

#7
omani كتب:

اعددت لك مثال .واتمنى ان يفيدك ..

ولكن يبدو ان هناك مشكلة في نظام رفع الملفات .

تجده هنا .

http://uploading.com/files/73961d62/ABC.rar/

تحياتي

أنا بصراحة محرج جدا منك بس للأسف مش هو دا إلى انا محتاجة

أنا مقدر تعبك معايا وربنا يجعله في ميزان أعمالك

هابسطها شوية وخلينا نفكر مع بعض بصوت عال

هل هناك إمكانية لعمل جملة حفظ في جدول آخر أثناء عرض الشجرة ولكن بنفس الترتيب الموجود بالشجرة أنا حاولت ولكن بيحفظ بنفس الترتيب المحفوظ بالجدول وليس المعروض بالشجرة

وهذا كود العرض هل يمكن مساعدتي في حفظ بيانات الشجرة أثناء العرض بحيث تظهر بهذه الطريقة في الداتا جريد

والصورة في المرفقات توضح الشكل الذي أريد أن تظهر عليه الداتا جريد

Dim oNodex As Node

On Error Resume Next
RS.Close
SQL = "SELECT * FROM [A_Account_info] order by id"
RS.Open SQL, DB, adOpenStatic, adLockReadOnly

If RS.RecordCount > 0 Then
TreeView1.Nodes.Clear
RS.MoveFirst
  Do While RS.EOF = False
     If Trim(RS.Fields("account_from_up")) = "0>" Then 'All root nodes have 0_ in the (account_from_up) field
                Set oNodex = TreeView1.Nodes.Add(, tvwFirst, Trim(RS.Fields("account_level")), _
                Trim(RS.Fields("account_code")) & " --- " & Trim(RS.Fields("account_name")))
                    If oNodex.Children <> 0 Then
                       oNodex.Image = "close"

                    End If
                oNodex.ForeColor = vbRed
            Else 'All child nodes will have the (account_level) stored in the parent field
                Set oNodex = TreeView1.Nodes.Add(Trim(RS.Fields("account_from_up")), tvwChild, _
                Trim(RS.Fields("account_level")), Trim(RS.Fields("account_code")) & " --- " & Trim(RS.Fields("account_name")))
                    If oNodex.Children <> 0 Then
                       oNodex.Image = "open"
                       'oNodex.Expanded = False
                    Else
                       oNodex.Image = "docs"
                    End If
                oNodex.EnsureVisible
                'oNodex.Expanded = False
                TreeView1.FullRowSelect = True
                oNodex.ForeColor = vbBlack
            End If
            RS.MoveNext
        Loop
    RS.Close
    End If

طلب آخير هل ممكن كود أقدر من خلاله أعرف المستوى الموجود بيه على الشجرة

يعني لو حددت رقم الحساب 1111 من على الشجرة يعرفني إني واقف في المستوى الخامس وأنا أرفقت شاشتين ياريت تساعدني فيهم وشكرا

post-221207-019859000 1298665944_thumb.j

ACOUNT.rar

المرفقات
2.JPG

تم تعديل هذه المشاركة بواسطة ابو رفيق في 26 فبراير 2011 في 12:31

:)  :)  :)  شكرا لكل من علمني حرفا :)  :)  :)


#8

اخي اعتقد انك بحاجة لتقسيم البيانات الى اربعة جداول .

أو ان تقوم تقوم بتعيين نوع الحساب مثلا بأن تضيف في نفس الجدول حقول من نوع نعم/لا لحساب الام وفرعي 1 وفرعي 2 وفرعي 3 ثم حساب فرعي .

تحياتي

OMANI FOR EVER

-------------------------------------------------

post-12787-12780191801974.jpg

-------------------------------------------------

#9
omani كتب:

اخي اعتقد انك بحاجة لتقسيم البيانات الى اربعة جداول .

أو ان تقوم تقوم بتعيين نوع الحساب مثلا بأن تضيف في نفس الجدول حقول من نوع نعم/لا لحساب الام وفرعي 1 وفرعي 2 وفرعي 3 ثم حساب فرعي .

تحياتي

الأخ عماني جزاك الله خير

انا هاسأل بعض الأسئلة وممكن تصحح لي لو فهمي خطأ

1 - برامج المحاسبة التكويد الخاص بنظام المحاسبة ثابت في البنية العامة على الأقل المستوى الأول والذي يحتوي على ( أصول - خصوم _ مصروفات - إيرادات ) ونوع الحساب ( دائن أو مدين )؟ على أساس باقي الحسابات الفرعية تحمل نفس خصائص الحساب الأب

2 - هل هناك حد أقصى لمستويات الحساب وأتحكم فيها بحد خمس أو ست مستويات مثلا وأعمل لكل مستوى جدول وأربطهم مع بعض أو المفروض أترك المستويات مفتوحة

3 - هل هناك كود لو وقفت فيه على الشجرة يعرفني انا واقف في أي مستوى من الشجرة وشكرا

ملحوظة انا أرفقت جزء من المشروع لو ممكن تساعدني فيه إذا أمكن ولك جزيل الشكر لأني بصراحة برنامج المحاسبة أعتقد إن أصعب حاجة فيه هي صحة بناء الحسابات والتكويد يكون مبنى صح مش كده؟

ACOUNT.rar

:)  :)  :)  شكرا لكل من علمني حرفا :)  :)  :)


#10
ابو رفيق كتب:

الأخ عماني جزاك الله خير

انا هاسأل بعض الأسئلة وممكن تصحح لي لو فهمي خطأ

1 - برامج المحاسبة التكويد الخاص بنظام المحاسبة ثابت في البنية العامة على الأقل المستوى الأول والذي يحتوي على ( أصول - خصوم _ مصروفات - إيرادات ) ونوع الحساب ( دائن أو مدين )؟ على أساس باقي الحسابات الفرعية تحمل نفس خصائص الحساب الأب

2 - هل هناك حد أقصى لمستويات الحساب وأتحكم فيها بحد خمس أو ست مستويات مثلا وأعمل لكل مستوى جدول وأربطهم مع بعض أو المفروض أترك المستويات مفتوحة

3 - هل هناك كود لو وقفت فيه على الشجرة يعرفني انا واقف في أي مستوى من الشجرة وشكرا

ملحوظة انا أرفقت جزء من المشروع لو ممكن تساعدني فيه إذا أمكن ولك جزيل الشكر لأني بصراحة برنامج المحاسبة أعتقد إن أصعب حاجة فيه هي صحة بناء الحسابات والتكويد يكون مبنى صح مش كده؟

في الحقيقة ليس لدي فكرة عن كيفية ادارة الحسابات.. ولكن لا اعتقد ان جعلها مفتوحه بأمر محمود . فهي لها حد معين . وعلى هذا الاساس يتم توزيع الحسابات.

تحياتي

OMANI FOR EVER

-------------------------------------------------

post-12787-12780191801974.jpg

-------------------------------------------------

مواضيع مشابهة