منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[SQL] بطء تحميل البيانات - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة السي شارب C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=175)
+--- قسم : قسم اسئلة C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=176)
+--- الموضوع : [SQL] بطء تحميل البيانات (/showthread.php?tid=14251)



بطء تحميل البيانات - ربيع - 27-12-15

نحمده ونصلي على رسوله الكريم
السلام عليكم ورحمة الله

يتم جلب البيانات ما بين ثانية وثلاث ثوان لكن عند اسناد الـ datasource للاداة تاخذ ما بين 15-20 ثانية اضافية
وهذا الامر كاف لبطء تحميل النموذج
جربت استخدام الـ background worker وكذلك الـ thread لكن النتيجة واحدة يبقى النموذج متعطل عن العمل الى ان تكتمل عملية ملء البيانات
جربت refresh و doevents حتى يستجيب النموذج ودون جدوى ايضا

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

فهل من حل او فكرة؟
وجزاكم الله خيرا


RE: بطء تحميل البيانات - HASAN6.0 - 27-12-15

قم بتحميل اول 100 خانه مثلا. ثم في حاله عمل scroll قم بتحميل 100 اخرى مع تحديد السطر 101 . وهكذا ...
ولكن سؤال .
ما نوع البيانات المطلوب عرضها . وكم عددها.؟

وهل الجدول فيه حقل ترقيم ؟

طبعا اسم هذه الطريقة هو Paging ويمكنك البحث عنها ...
هنا مثال لجلب بيانات من الجدول ABC الذي يحتوي 1000000 حقل وعرضها كل 25 في دفعة ... مثلاً
لتستغرق العملية اجزاء من الثانية .
PHP كود :
Imports System.Data.SqlClient
Public Class Form1
    Dim pagingAdapter 
As SqlDataAdapter
    Dim pagingDS 
As DataSet
    Dim scrollVal 
As Integer
    Private Sub Button1_Click
(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button1.Click
        Dim connectionString 
As String "Data Source=.;Initial Catalog=ABC;Integrated Security=True"
 
       Dim sql As String "SELECT * FROM ABC"
 
       Dim connection As New SqlConnection(connectionString)
 
       pagingAdapter = New SqlDataAdapter(sqlconnection)
 
       pagingDS = New DataSet()
 
       connection.Open()
 
       pagingAdapter.Fill(pagingDSscrollValval(NumericUpDown1.value), "ABC_table")
 
       connection.Close()
 
       DataGridView1.DataSource pagingDS
        DataGridView1
.DataMember "ABC_table"
 
   End Sub
    Private Sub Button2_Click
(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button2.Click
        scrollVal 
scrollVal val(NumericUpDown1.value)
 
       If scrollVal <= 0 Then
            scrollVal 
0
        End 
If
 
       pagingDS.Clear()
 
       pagingAdapter.Fill(pagingDSscrollValVal(NumericUpDown1.Value), "ABC_table")
 
   End Sub
    Private Sub Button3_Click
(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button3.Click
        scrollVal 
scrollVal val(NumericUpDown1.value)
 
       pagingDS.Clear()
 
       pagingAdapter.Fill(pagingDSscrollValval(NumericUpDown1.value), "ABC_table")
 
   End Sub
End 
Class 
 وهنا C# حسب المترجم 
PHP كود :
using System.Data.SqlClient;
public class 
Form1
{
    
SqlDataAdapter pagingAdapter;
    
DataSet pagingDS;
    
int scrollVal;
    
// ERROR: Handles clauses are not supported in C#
private void Button1_Click(System.Object senderSystem.EventArgs e)
    {
        
string connectionString "Data Source=.;Initial Catalog=ABC;Integrated Security=True";
        
string sql "SELECT * FROM ABC";
        
SqlConnection connection = new SqlConnection(connectionString);
        
pagingAdapter = new SqlDataAdapter(sqlconnection);
        
pagingDS = new DataSet();
        
connection.Open();
        
pagingAdapter.Fill(pagingDSscrollValval(NumericUpDown1.value), "ABC_table");
        
connection.Close();
        
DataGridView1.DataSource pagingDS;
        
DataGridView1.DataMember "ABC_table";
    }
    
// ERROR: Handles clauses are not supported in C#
private void Button2_Click(System.Object senderSystem.EventArgs e)
    {
        
scrollVal scrollVal val(NumericUpDown1.value);
        if (
scrollVal <= 0) {
            
scrollVal 0;
        }
        
pagingDS.Clear();
        
pagingAdapter.Fill(pagingDSscrollValVal(NumericUpDown1.Value), "ABC_table");
    }
    
// ERROR: Handles clauses are not supported in C#
private void Button3_Click(System.Object senderSystem.EventArgs e)
    {
        
scrollVal scrollVal val(NumericUpDown1.value);
        
pagingDS.Clear();
        
pagingAdapter.Fill(pagingDSscrollValval(NumericUpDown1.value), "ABC_table");
    }


 وانظر هذا المثال . Undecided
.............................
 من الجدير بالذكر ان تسيق Datagridview (الافتراضي على الاقل) يأخذ جزء من الوقت عند اضافة اي حقل .!!!


RE: بطء تحميل البيانات - ربيع - 27-12-15

بارك الله فيك اخ حسن وجزاك خير على ردك

جملة الاستعلام تحضر البيانات خلال ثانية واحدة فقط (ليس لدي مشكلة معها)
المشكلة ان اداة الـ combobox او اداة الـ datagridview عند اسناد الـ datasource لها وان كانت 10 حقول فقط تتاخر في العرض ما بين 15-20 ثانية وفي حدث تحميل النموذج يتاخر البرنامج حتى يظهر والمستخدم يقوم بفتحة عدة مرات ظنا منه انه لم يعمل
استخدمت العمليات الفرعية ويظهر النموذج فور الضغط عليه لكن يبقى غير مستجيب للمستخدم تلك الفترة (15-20 ثانية)


RE: بطء تحميل البيانات - HASAN6.0 - 28-12-15

(27-12-15, 10:50 PM)ربيع كتب : المشكلة ان اداة الـ combobox او اداة الـ datagridview عند اسناد الـ datasource لها وان كانت 10 حقول فقط تتاخر في العرض ما بين 15-20 ثانية وفي حدث تحميل النموذج يتاخر البرنامج حتى يظهر والمستخدم يقوم بفتحة عدة مرات ظنا منه انه لم يعمل
استخدمت العمليات الفرعية ويظهر النموذج فور الضغط عليه لكن يبقى غير مستجيب للمستخدم تلك الفترة (15-20 ثانية)

على الاغلب انه يوجد خلل بالتصميم ...
حاول تصميم نموذج جديد وضع الادوات من جديد ... وانظر النتيجة .
يعني : الخط الافتراضي للادوات . rightToleft = false
وتأكد من انه لا يوجد تضارب في الاحدث Events .
يعني في حين ملىء الـComboBox تأكد من انه لا يعمل .
والـ DataGridView وكل ذلك .
مثلاً
PHP كود :
if combobox1.focused false then exit sub 
PHP كود :
if (comboBox1.Focused == false )

                return; 
Smile


RE: بطء تحميل البيانات - Abu Ehab - 28-12-15

طيب  كرمال عيونك راح  ا عطيك  كود من عندي   
PHP كود :
 Dgv.Rows.Clear();

 
           this.Invoke((MethodInvoker)delegate
            
{

 
               // Write Your Code Here  

 
           }); 
و المفترض اساسا   كل الشغل يكون Lamda    ,  والمفترض تستخدم  CompiledQuery .Compile  حتى ترتاح 
ولما تكون عايز  تشحن بيانات في الكمبوبكس مثلا  استخدم AddRange


RE: بطء تحميل البيانات - ربيع - 28-12-15

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