تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] أريد أسرع طريقة لحساب عدد الأسطر في عدة جداول في قاعدة البيانات Sort by votes
#1
Rainbow 
أريد أسرع طريقة لحساب عدد الأسطر في عدة جداول في قاعدة البيانات (40 جدول مثلا)
وجدت الكود التالي لكنه لم ينجح
ممكن أعرف أين الخطأ

كود :
'*****************************************************************************************
dtt.Clear()
daa = New OleDbDataAdapter("select   count(ID)  as n  from TABLE_01    ,   select count(ID)  as m  from TABLE_02   ,   select count(ID)  as K  from TABLE_03  ,   select count(ID)  as L  from TABLE_04      ", cn)
daa.Fill(dtt)
'*****************************************************************************************


MsgBox(dtt.Rows(0).Item("n"))
MsgBox(dtt.Rows(0).Item("m"))
MsgBox(dtt.Rows(0).Item("K"))
MsgBox(dtt.Rows(0).Item("L"))
الرد }}}
تم الشكر بواسطة:
#2
PHP كود :
'*****************************************************************************************
        dtt.Clear()
        daa = New OleDbDataAdapter("SELECT count(ID)  as N  from TABLE_01  
                                   UNION ALL select count(ID)  as N  from TABLE_02  
                                   UNION ALL select count(ID)  as N  from TABLE_03  
                                   UNION ALL select count(ID)  as N  from TABLE_04" , cn)
        daa.Fill(dtt)
        '
*****************************************************************************************


 
       MsgBox(dtt.Rows(0).Item("N"))
 
       MsgBox(dtt.Rows(1).Item("N"))
 
       MsgBox(dtt.Rows(2).Item("N"))
 
       MsgBox(dtt.Rows(3).Item("N")) 
صلى الله على نبينا محمد
اخيكم / محمود صالح
  قال الزهري رحمه الله  
 مــا عُـــبـِد الله بشئ أفضل من العلم 
الرد }}}
تم الشكر بواسطة: sniperjawadino
#3
(21-03-18, 12:08 AM)محمود صالح كتب :
شكرا لك أخي محمود على التعديل
جزاك الله كل خير
فقط أخي من خلال خبرتك
ألن يؤثر كثرة الاستعلامات على قاعدة البيانات
لأن هذا الكود سأستخدمه في 40 جدول
و في كل دقيقة
الرد }}}
تم الشكر بواسطة: محمود صالح
#4
هذة أبسط طريقة :
كود :
       daa = New OleDbDataAdapter("SELECT (select count(*) from TABLE_01) + (select count(*) from TABLE_02) + (select count(*) from TABLE_03) + (select count(*) from TABLE_04)", cn)
       daa.Fill(dtt)
       MsgBox(dtt.Rows(0)(0))
 طبعاً لا يؤثر  على قاعدة البيانات ولكن على أداء البرنامج ممكن يتأثر حسب حجم قاعدة البيانات.
من باب الفضول هل لي أن أعرف لماذا تسأل عن مجموع عدد الصفوف لعدد اربعين جدول في كل دقيقة؟
الرد }}}
#5
حاول تستخدم Parallel.For
يحيث تعمل loop علي كل الملفات في وقت واحد و تنفذ امر الداتا بيز علي كل ملف بشكل متوازي

الكود التالي مجرد مثال بسيط لكيفية استخدام جملة Parallel.For لقراءة حجم جميع الملفات تحت فهرس المشروع

PHP كود :
       Dim files() As String Directory.GetFiles(".\")
        Dim totalSize As Long = 0
        Dim callBack As Action(Of Integer) = Sub(index As Integer)
                                                 Dim fi As New FileInfo(files(index))
                                                 Dim size As Long = fi.Length
                                                 Interlocked.Add(totalSize, size)
                                             End Sub
        Parallel.For(0, files.Length, callBack) 
Retired
الرد }}}
تم الشكر بواسطة: محمود صالح , sniperjawadino
#6
اعتقد انك محظوظ
ان شخصين مثل هؤلاء ردو عليك 
فحين ترى ذلك 
لا يكون تعلم فقط
بل والاستمتاع
صلى الله على نبينا محمد
اخيكم / محمود صالح
  قال الزهري رحمه الله  
 مــا عُـــبـِد الله بشئ أفضل من العلم 
الرد }}}
تم الشكر بواسطة: sniperjawadino , عبد العزيز البسكري
#7
(22-03-18, 01:34 AM)محمود صالح كتب : اعتقد انك محظوظ
ان شخصين مثل هؤلاء ردو عليك 
فحين ترى ذلك 
لا يكون تعلم فقط
بل والاستمتاع


نعم أخي محمود والله لي فرحة على هذه الردود التي ستساعدني في مشروعي

شكرا لك أيضا أخي

(21-03-18, 09:45 PM)عبدالله الدوسري كتب : هذة أبسط طريقة :
كود :
       daa = New OleDbDataAdapter("SELECT (select count(*) from TABLE_01) + (select count(*) from TABLE_02) + (select count(*) from TABLE_03) + (select count(*) from TABLE_04)", cn)
       daa.Fill(dtt)
       MsgBox(dtt.Rows(0)(0))
 طبعاً لا يؤثر  على قاعدة البيانات ولكن على أداء البرنامج ممكن يتأثر حسب حجم قاعدة البيانات.
من باب الفضول هل لي أن أعرف لماذا تسأل عن مجموع عدد الصفوف لعدد اربعين جدول في كل دقيقة؟





ضهر لي خطأ في الكود

على العلم أخي أني أريد أن أعرف قيمة كل جدول 






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

مثلا 
الطاولات الممتلئة ستضهر بالأصفر
و الفارغة بالأزرق

أرجوا أن أكون وضحت سبب سؤالي
الرد }}}
تم الشكر بواسطة:
#8
جرب هذا الكود :
كود :
       daa = New OleDbDataAdapter("SELECT (select count(*) from TABLE_01) AS T1, (select count(*) from TABLE_02) AS T2, (select count(*) from TABLE_03) AS T3, (select count(*) from TABLE_04) AS T4,", cn)
       daa.Fill(dtt)
       Dim TableCount As Integer = 4 ' هنا يجب أن تحدد عدد الجداول الموجود في جملة الإستعلام , بمعنى آخر هذا هو عدد الحقول التي سترجع من هذا الإستعلام
       Dim TotalRows As Integer = 0
       Dim Msg As String = ""
       For I As Integer = 0 To TableCount - 1
           Msg &= "TABLE_0" & I + 1 & " Rows Count = "
           If dtt.Rows(0)(I) IsNot DBNull.Value Then
               TotalRows += dtt.Rows(0)(I)
               Msg &= dtt.Rows(0)(I) & vbNewLine
           Else
               Msg &= 0 & vbNewLine
           End If
       Next

       Msg = "Number of all rows = " & TotalRows & vbNewLine & "Details of the number of rows for each table : " & vbNewLine & Msg

       MsgBox(Msg)
تعليق على موظوع الطاولات في المطعم وربط كل طاولة بجدول في قاعدة البيانات :
بالطريقة التي تستخدمها , لا يمكن أن أقول أنها طريقة خطأ, ولكن أعتبرها طريقة غير فعالة .
هناك تساؤل : ماذا لو قرر صاحب المطعم أن يقلل عدد الطاولات , والأهم ماذا لو قرر أن يزيد في عددهم,  هل ستفتح قاعدة البيانات وتنشئ جدول جديد يخص الطاولة الجديدة, وحتى لو لم يحدث , لا تتم بهذة الطريقة .
تخيل بنك له 20 فرع , هل تعتقد أنه سيقوم بإنشاء 20 جدول لكل فرع جدول مختلف, طبعاً مستحيل , جميع العملاء يتم تخزين بياناتهم في جدول واحد حتى لو وصل عددهم إلى 40,000,000 أربعين مليون عميل, مهما كان الرقم

النصيحة إن أمكن تطبيقها : تصميم جدول واحد يخدم جميع الطاولات , إذا كنت ما زلت في مرحلة التطوير وتجد أنه يمكنك تغيير الطريقة , ستكون أكثر فاعلية وإنسجام ونسبت الأخطاء أقل بكثير.
حيث أنك ستتعامل مع جدول واحد فقط , وكل ما عليك هو تحديد رقم الطاولة في أي إجراء تريدة.
مثلاً جدول , تسمية الطاولات , وتظيف فيه عدد سجلات مساوي لعدد الطاولات , كل سجل يحمل رقم طاولة مختلف, ويمكن أن يكون هو المفتاح الأساسي, لا تحتاج إلى ترقيم تلقائي , وعندما تريد أن تتعامل مع طاولة معينة تمرر رقم الطاولة للإستعلام وسيتم الإجراء الذي تنوي القيام به, وإذا كانت هناك بيانات تسجل لكل طاولة , إستخدم جدول مختلف مرتبط برقم الطاولة ويخدم أيضاً جميع الطاولات.
وإذا قرر صاحب المطعم زيادة عدد الطاولات مثلاً , كل ما علية هو إضافة سجل جديد لهذة الطاولة.

مجرد نصيحة
الرد }}}
تم الشكر بواسطة: HASAN6.0 , sniperjawadino
#9
شكرا جزيلا لك أخي [b]عبدالله الدوسري على شرحك الجميل للفكرة[/b]
[b]نصيحتك في محلها[/b]
[b]أحاول الآن رسم الأفكار في مخيلتي [/b]

[b]جزاك الله كل خير[/b]
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  ممكن طريقة الفليكسي ( شحن رصيد الهانف) sdz 0 44 20-05-24, 03:24 PM
آخر رد: sdz
  اختصار كود الجمع داخل شبكة البيانات محمد خيري 2 157 25-04-24, 03:30 PM
آخر رد: محمد خيري
  أريد البحث بإستخدام أي جزء من الكلمة و ليس أول جزء منها . CoderMM 3 173 17-04-24, 01:19 AM
آخر رد: Taha Okla
  [VB.NET] طريقة استدعاء مكتبة dll عبد الناصر موسى 3 1,511 10-04-24, 04:33 AM
آخر رد: emadahmed1995
  [VB.NET] طريقة التعلم بخطوات صحيحة للتعلم و المعرفة انمار الرواي 0 82 31-03-24, 08:23 PM
آخر رد: انمار الرواي
  هل من الممكن العمل على قاعدة بيانات اكسل على الفيجوال بيسك خالد كامل1 4 194 24-03-24, 02:00 AM
آخر رد: خالد كامل1
  تعديل طول حقل معين في جميع جداول القاعدة atefkhalf2004 1 138 09-03-24, 03:17 AM
آخر رد: atefkhalf2004
  محتاج طريقة لتنسيق نص الرسالة المرسلة إلى الواتس اب new_programer 2 259 04-03-24, 07:15 AM
آخر رد: new_programer
  [VB.NET] حل مشكلة الاتصال بقواعد البيانات access loay775 2 230 25-02-24, 06:29 AM
آخر رد: loay775
  انشاء قاعدة بيانات من ملف سكربت strongriseman 5 540 17-02-24, 02:57 PM
آخر رد: strongriseman

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


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