تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[SQL] بطء تحميل البيانات
#1
نحمده ونصلي على رسوله الكريم
السلام عليكم ورحمة الله

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

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

فهل من حل او فكرة؟
وجزاكم الله خيرا
الرد }}}}
تم الشكر بواسطة: khodor1985
#2
قم بتحميل اول 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 (الافتراضي على الاقل) يأخذ جزء من الوقت عند اضافة اي حقل .!!!
الرد }}}}
تم الشكر بواسطة: ربيع , khodor1985
#3
بارك الله فيك اخ حسن وجزاك خير على ردك

جملة الاستعلام تحضر البيانات خلال ثانية واحدة فقط (ليس لدي مشكلة معها)
المشكلة ان اداة الـ combobox او اداة الـ datagridview عند اسناد الـ datasource لها وان كانت 10 حقول فقط تتاخر في العرض ما بين 15-20 ثانية وفي حدث تحميل النموذج يتاخر البرنامج حتى يظهر والمستخدم يقوم بفتحة عدة مرات ظنا منه انه لم يعمل
استخدمت العمليات الفرعية ويظهر النموذج فور الضغط عليه لكن يبقى غير مستجيب للمستخدم تلك الفترة (15-20 ثانية)
الرد }}}}
تم الشكر بواسطة: khodor1985 , khodor1985 , HASAN6.0
#4
(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
الرد }}}}
تم الشكر بواسطة: khodor1985
#5
طيب  كرمال عيونك راح  ا عطيك  كود من عندي   
PHP كود :
 Dgv.Rows.Clear();

 
           this.Invoke((MethodInvoker)delegate
            
{

 
               // Write Your Code Here  

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

Abu Ehab : Microsoft Partner  & Systems Developer
الرد }}}}
تم الشكر بواسطة: khodor1985 , khodor1985 , ربيع
#6
جزاك الله خير يا ابو ايهاب
انا استخدمت الكود بالعملية الفرعية لكن البرنامج بتعطل لحتى يخلص تحميل البيانات
addrange ما استخدمتها لانه بهمني الـ selectedvalue من الـ combobox حتى اقلل من الاستعلامات لكن لو اضطريت رح استخدم الـ addrange مثل ما اشرت علي
بارك الله فيك
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [C#.NET] عرض البيانات في combobox mera.55 8 527 19-05-16, 01:13 PM
آخر رد: mera.55
  احتاج مساعدة في حفظ البيانات ؟؟ wal2007eed 7 377 16-05-16, 11:10 PM
آخر رد: Adrees
  [C#.NET] محتارة تبادل البيانات بينdata gridveiw وعرضها ؟؟ mera.55 4 337 24-04-16, 03:59 PM
آخر رد: WAEL ABED
Lightbulb [C#.NET] البحث عن البيانات بشرط معين و طباعتها info@cnr 2 223 21-04-16, 05:46 PM
آخر رد: info@cnr
  تكرار البيانات في datagridview شموخي 6 295 05-04-16, 11:15 PM
آخر رد: شموخي
  [سؤال] اضافة في قاعدة البيانات المبرمج العبقري 0 147 14-03-16, 07:51 PM
آخر رد: المبرمج العبقري
  رابط مباشر وسريع أو رابط تورنت فيجوال ستوديو كامل متكامل يتفاعل مع مع قواعد البيانات mrbadawi 0 271 01-07-15, 07:37 PM
آخر رد: mrbadawi
  [C#.NET] تعديل البيانات في الداتاغريد فيو غير مرتبطة بداتا سورس info@cnr 0 327 05-02-15, 12:24 PM
آخر رد: info@cnr
  [سؤال] عن برنامج تحميل من الانترنت من خلال الكود mybbarab 5 1,064 18-10-14, 12:24 AM
آخر رد: mybbarab
  [سؤال] ارسال البيانات من مستخدم لاخر progme 0 546 02-11-13, 08:41 PM
آخر رد: progme

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


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