تقييم الموضوع :
  • 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
 Youtube   Facebook    Twitter   
الرد }}}
تم الشكر بواسطة: khodor1985 , khodor1985 , ربيع
#6
جزاك الله خير يا ابو ايهاب
انا استخدمت الكود بالعملية الفرعية لكن البرنامج بتعطل لحتى يخلص تحميل البيانات
addrange ما استخدمتها لانه بهمني الـ selectedvalue من الـ combobox حتى اقلل من الاستعلامات لكن لو اضطريت رح استخدم الـ addrange مثل ما اشرت علي
بارك الله فيك
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] احتاج الى مساعدة فى تعديل مشروع خاص C# وقاعدة البيانات SQL Server كتكوت المصري 1 504 15-08-23, 02:02 AM
آخر رد: WAEL ABED
  [C#.NET] جلب البيانات من اليوزر كنترول Heemo 1 659 02-06-23, 12:57 AM
آخر رد: G20
  [سؤال] ازي احفظ قيم فارغة في قاعدة البيانات mazentq 4 1,678 04-10-22, 11:15 AM
آخر رد: رضوان الجماعي
Sad [C#.NET] تطبيق الويندوز لا يستطيع تحديد قاعدة البيانات المثبتة معى التطبيق عند تشغيله على حاسو Kamel Soltani 1 835 03-10-22, 04:09 PM
آخر رد: asemshahen5
  [سؤال] حول تكرار البيانات في نفس التاريخ sher 2 918 21-06-22, 12:07 PM
آخر رد: sher
  [سؤال] طريقة ربط مشروع برابط URL وتحديث البيانات منه talal_ameer 1 1,189 11-02-22, 01:38 AM
آخر رد: عدنان الشمري
  السلام عليكم تم تحميل vb.net api google ahmedhhh2 0 1,054 29-12-21, 09:50 PM
آخر رد: ahmedhhh2
  [سؤال] كيف يمكنني سحب البيانات من قواعد البيانات حسب الشخص يلي سجل دخوله للسيستم ؟ aabir 1 1,220 30-10-21, 01:55 PM
آخر رد: رسول555
  [C#.NET] سؤال بخصوص ادخال البيانات واستدعائها من ال dataset امير رزق 3 1,478 28-08-21, 07:55 PM
آخر رد: asemshahen5
  طريقة تحجيم الصورة قبل حفظها في قاعدة البيانات jalalaldeen 1 1,358 05-02-21, 10:01 PM
آخر رد: ابراهيم ايبو

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


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