تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مكتبة اسهل من مكتبة Dapeer
#11
شكرا أخي الدوسري ، هذه هفوة مني لقد انتبهت لها فيها بعد ، وقمت بالتعديل .
شكرا على التصحيح .
كما انني نقلت الامر

PHP كود :
Private builder As New OleDbCommandBuilder(TDataAdapter

الى بداية الفئة

وتركت أمر قتله في الاجراء حفظ

PHP كود :
Try
 
           
            TBinding
.EndEdit()
 
           TDataAdapter.Update(TTable)
 
           Return True
        Catch ex 
As Exception
            Return False
        Finally
            builder
.Dispose()
 
       End Try 


كنت اتمنى ان يكون من لاحظ هذا اي شخص أخر ، لنعلم ان هناك من هو متابع معنا .
على العموم سوف أستمر
الرد }}}
تم الشكر بواسطة: عبدالله الدوسري , asemshahen5
#12
كنت في فيما سبق استخدم نفس الفئة لربط الجدولين ببعض واتركها تكتشف هي نفسها

PHP كود :
If Keyindex "" Then
            cmd
.CommandText Query " where " Keyindex "=" PrimaryTable.CurrentId
        Else
            cmd
.CommandText Query
        End 
If 

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

طبعا هذا خلق بعض التعقيد فيما بعد ، وهنا اقول لماذا نسنخدم نفس الفئة يمكننا استخدام فئة جديدة لا ستخدامها في ربط الجداول الفرعية

سوف احمل الليلة ان شاء الله التجربة على نفس قاعدة البيانات

تم اضافة اجراء جديد وحذف 
ملاحظة اجراء حذف يحذف مؤقتا يجب ان يتبعه امر حفظ هذا يعطي خيار اوسع للمستخدم

تم اضافة بعض الخصائص التي نحتاجها للتعامل مع الجداول الفرعية

PHP كود :
TTotal.Connection con
        TTotal
.PrimaryKey "ID"
 
       TTotal.Keyindex "CustomerID"
 
       TTotal.PrimaryTable TCustomer
        TTotal
.TQuery "Select * from Total" 




اي ملاحظة او اي سؤال انا جاهز او اي نقذ او تصحيح انا جاهز نرجوا من الجميع المشاركة

على الاقل من لا يعرف كيف يبرمج مثلا ان يجرب ويقول لنا ما الاسهل ، لو كان كذا او كذا .

ليس صعبا حمل المثال وانقر زر تشغيل وسيعمل كل شئ ،


الملفات المرفقة
.rar   WindowsApplication1.rar (الحجم : 46.9 ك ب / التحميلات : 24)
الرد }}}
تم الشكر بواسطة: sendbad100 , asemshahen5
#13
سوف اضيف لها امكانية الربط Binding وكذلك تنفيذ الاوامر بشكل مباشر بواسطة Command والقراءة بواسطة قاري البيانات
بحيث يكون هناك تعدد خيارات للمستخدم في استخدام ما يريد او تنويع الوسائل بما يتلائم مع مشروعه .

طبعا نحن في انتظار لمسات محترفين اذا سمح وقتهم بذلك .
الرد }}}
تم الشكر بواسطة: sendbad100 , asemshahen5
#14
تم تعديل الاجراء Data-source لانه سيتم تعبئة البيانات من جديد بكل مرة يتم فيها ربط اي اداة به
وتم استبدال اجراء التعبئة بالاسم Open على طريقة الدلفي .

PHP كود :
TCustomer.Connection con
        TCustomer
.PrimaryKey "ID"
 
       TCustomer.TQuery "Select * from Customers"
 
       TCustomer.Open()

 
       TTotal.Connection con
        TTotal
.PrimaryKey "ID"
 
       TTotal.Keyindex "CustomerID"
 
       TTotal.PrimaryTable TCustomer
        TTotal
.TQuery "Select * from Total"
 
       TTotal.Open() 



وجعل الادوات تتصل بمصدر البيانات بالـ Data-binding مباشرة .

PHP كود :
DataGridView1.DataSource TCustomer.DataSource
        DataGridView2
.DataSource TTotal.DataSource 



وتم اضافة اجراء يعود بمجموع اي عمود للوقت الحاجة وخاصة لمن يستخدمون برامج حسابية مثل المبيعات او المشتريات

تم اضافة امكانية الربط المباشر .

تم رفع الحدث Position حتى يمكن اقتناصه من قبل المستخدم

PHP كود :
Private Sub PrimaryTablePosition(sender As ObjectAs EventArgsHandles TTotal.IndexTablePosition
        TextBox9
.Text TTotal.Sum("March")
 
   End Sub 



الملفات المرفقة
.rar   WindowsApplication1.rar (الحجم : 79.29 ك ب / التحميلات : 22)
الرد }}}
تم الشكر بواسطة: عبدالله الدوسري , asemshahen5
#15
تم استخدام التحميل الزائد وصار بالامكان ارسال كائن الاتصال عند تعريف الفئة مباشرة

PHP كود :
Sub New()

 
   End Sub

    Sub 
New(Connection As OleDbConnection)
 
       TConnection Connection
    End Sub 


PHP كود :
Dim con As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='|DataDirectory|\Contacts.mdb'")
 
   Dim TCustomer As New EasyOleDbGo(con)
 
   Dim WithEvents TTotal As New EasyOleDbGo(con


وهو ما يغني عن ربط كائن الاتصال فيما بعد بالفئة

PHP كود :
TCustomer.Connection con 

كما تم اضافة فئة للتعامل مع قواعد بيانات SqlServer بنفس الطريقة


الملفات المرفقة
.rar   WindowsApplication1.rar (الحجم : 85.54 ك ب / التحميلات : 23)
الرد }}}
تم الشكر بواسطة: sendbad100 , عبدالله الدوسري , asemshahen5
#16
لازال يعتقد الاخرون اننا نلهو فقط ولا نريد ان نشن هجوم مباغت .
عفوا اقصد نشيد مكتبة يمكن الاعتماد عليها

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

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

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

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



قبل قليل كنت اتصفح بعض الاكواد وفكرت في فكرة ما .
مثلا اذا عدنا الى ما قاله الاخ الدوسري 

كود :
من المستحيل أن تجد مكتبة تخدم كل من يريد أن يتصل بمصدر بيانات
كل مبرج يريد أن يقوم بعمل معين وبطريقة معينة وفي وقت معين يدخل فيها إجراء معين وبشروط معينة في لحظة معينة وسيقوم بإجراء معين بناءاً على شرط معين عندما يحدث في لحظة معينة وعندما يحدث شيء معين يريد أن يقوم بشيء معين لتفادي شيء معين ويستخدم طريقة أخرى معينة

مع انني كما قلت من قبل ايضا ، ان المكتبة مغلفة في بعض الاجراءات ، ولكن كل الكائنات مرئية يمكن اقتناص اي حدث او تنفيذ اي امر وباي وقت وبائ مكان .
عندما لا يكون هنا تعقيد تعمل بالطريقة البسيطة العادية .
اذا لم تكن كافية تدخل على الكائنات الرئيسية .


ولكن الفكرة التي خطرت لي لماذا لا يكون هناك تخصص في هذه المكتبة .

لبرامج المحاسبة تكون هناك مكتبة للمحاسبة فيها كل ماهو متوقع وما يحتاجه المبرمج عادة .
وللادارة والموظفين واحدة تهتم بهذا الجانب
وهكذا بحيث تختار ما تريد وتعمل ما تريد باسرع وقت ممكن .
الرد }}}
#17
اجريت قبل قليل تجربة على المكتبة وسرعة قراءتها

القراءة من 50 ألف سجل كانت من ربع الى ثلث ثانية

الى 97 الف او 100 ألف كانت ثانية .

طبعا هذه الثانية كانت مقلقة بالنسبة لي لاني لو استخدمت قاعدة بيانات Sqlite او Fire-bird لاختلف الوضع كثير .
والـ SqlServer معطل .
ولم يتبقى الا اسواء قاعدة بيانات عرفناها حتى الان وهي Access ، انها سيئة لدرجة انهم غالبا لا يحسبونها في مسابقات السرعة ولا تكون من ضمن القائمة .
على العموم ربما من الافضل لنا استخدام اسواء قاعدة بيانات للتجربة .

اذا 100 ألف سجل تم قراءتها فيي ثانية وكان معها عمود لحساب المجاميع والذي هو على اليسار تماما
وهو يقوم على حساب العمود d1+d2+d3  
تم عند اكتمال عملية التحميل قمت باجراء عملية احتساب كل عمود لوحده اي احتساب مجموع 100 ألف رقم لثلاثة اعمدة اي احتساب 300 ألف رقم وكانت السرعة حوالي 5 اجزاء من الثانية .
يعني سريعة ولا تلاحظ .

بصراحة تعتبر معقولة لاني كنت اتوقع ان استخدام DataAdapter والـ BindingSource قد يبطئ التنفيذ



والان هذا المثال وقاعدة البيانات لعملية كاملة من اضافة وتعديل وحذف واحتساب

بالنسبة للمبتدئين ليس هناك اسهل من

PHP كود :
 TCustomer.PrimaryKey "ID"
 
       TCustomer.TQuery "Select * from Customers"
 
       TCustomer.Open()
 
        

        TTotal
.PrimaryKey "ID"
 
       TTotal.Keyindex "CustomerID"
 
       TTotal.PrimaryTable TCustomer
        TTotal
.TQuery "Select * from Total"
 
       TTotal.Open() 

اعتقد ليس هناك سهولة اكثر من هذه


الملفات المرفقة
.rar   WindowsApplication1.rar (الحجم : 162.13 ك ب / التحميلات : 42)
الرد }}}
تم الشكر بواسطة: sendbad100 , sendbad100 , asemshahen5
#18
الله يعطيك الصحة والعافية 
جميل ورائع كعادتك
الرد }}}
تم الشكر بواسطة: viv , asemshahen5
#19
شكرا يا سندباد وبارك الله فيك
الرد }}}
تم الشكر بواسطة: asemshahen5



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم