منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
بطي في عرض او جلب البيانات من القاعدة - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : بطي في عرض او جلب البيانات من القاعدة (/showthread.php?tid=44345)



بطي في عرض او جلب البيانات من القاعدة - عبدالكريم برشدان - 20-11-22

السلام عليكم ورحمة الله وبركاته

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


وشكرا لكم .


RE: بطي في عرض او جلب البيانات من القاعدة - Taha Okla - 20-11-22

وعليكم السلام ورحمة الله وبركاته

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

قم بإضافة أزرار لنافذة العرض عدد اثنين (Button2) + (Button3).

ثم قم بمسح الكود السابق وأنسخ الكود التالي في كود نافذة العرض:
كود :
Imports System.Data.OleDb

Public Class Form1

   Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\DB_FLP.mdb;Jet OLEDB:Database Password=")

   Dim dp As New OleDbDataAdapter("Select * From Tbl", con)
   Dim ds As New DataSet

   Dim dt As DataTable

   Dim num2 As Integer
   Dim i As Integer = 0
   Dim j As Integer = 100

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click


       Try
           dp.Fill(ds)
           dt = ds.Tables.Item(0)
           num2 = (dt.Rows.Count - 1)
           Me.FlowLayoutPanel1.Controls.Clear()

           Do While (i <= num2)

               Dim uc As New UserControl1
               uc.Label1.Text = dt.Rows.Item(i).Item("nam").ToString
               Me.FlowLayoutPanel1.Controls.Add(uc)
               i += 1
               If i = j Then Exit Do
           Loop
       Catch ex As Exception
           MsgBox(ex.Message)
           Exit Sub
       End Try
       Button2.Enabled = True
       Button3.Enabled = True
   End Sub

   Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
       j = j + 100

       Try

           Me.FlowLayoutPanel1.Controls.Clear()

           Do While (i <= num2)

               Dim uc As New UserControl1
               uc.Label1.Text = dt.Rows.Item(i).Item("nam").ToString
               Me.FlowLayoutPanel1.Controls.Add(uc)

               i += 1
               If i = j Then Exit Do
           Loop
       Catch ex As Exception
           MsgBox(ex.Message)
           Exit Sub
       End Try
   End Sub

   Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
       j = j - 100 : If j < 0 Then j = 100
       i = i - 200 : If i < 0 Then i = 0


       Try

           Me.FlowLayoutPanel1.Controls.Clear()

           Do While (i <= num2)
               If i >= j Then Exit Do
               Dim uc As New UserControl1
               uc.Label1.Text = dt.Rows.Item(i).Item("nam").ToString
               Me.FlowLayoutPanel1.Controls.Add(uc)

               i += 1

           Loop
       Catch ex As Exception
           MsgBox(ex.Message)
           Exit Sub
       End Try
   End Sub

   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Button2.Text = "التالي"
       Button2.Enabled = False
       Button3.Text = "السابق"
       Button3.Enabled = False
   End Sub

End Class



RE: بطي في عرض او جلب البيانات من القاعدة - عبدالكريم برشدان - 21-11-22

(20-11-22, 08:34 PM)Taha Okla كتب : وعليكم السلام ورحمة الله وبركاته

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

قم بإضافة أزرار لنافذة العرض عدد اثنين (Button2) + (Button3).

ثم قم بمسح الكود السابق وأنسخ الكود التالي في كود نافذة العرض:
كود :
Imports System.Data.OleDb

Public Class Form1

   Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\DB_FLP.mdb;Jet OLEDB:Database Password=")

   Dim dp As New OleDbDataAdapter("Select * From Tbl", con)
   Dim ds As New DataSet

   Dim dt As DataTable

   Dim num2 As Integer
   Dim i As Integer = 0
   Dim j As Integer = 100

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click


       Try
           dp.Fill(ds)
           dt = ds.Tables.Item(0)
           num2 = (dt.Rows.Count - 1)
           Me.FlowLayoutPanel1.Controls.Clear()

           Do While (i <= num2)

               Dim uc As New UserControl1
               uc.Label1.Text = dt.Rows.Item(i).Item("nam").ToString
               Me.FlowLayoutPanel1.Controls.Add(uc)
               i += 1
               If i = j Then Exit Do
           Loop
       Catch ex As Exception
           MsgBox(ex.Message)
           Exit Sub
       End Try
       Button2.Enabled = True
       Button3.Enabled = True
   End Sub

   Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
       j = j + 100

       Try

           Me.FlowLayoutPanel1.Controls.Clear()

           Do While (i <= num2)

               Dim uc As New UserControl1
               uc.Label1.Text = dt.Rows.Item(i).Item("nam").ToString
               Me.FlowLayoutPanel1.Controls.Add(uc)

               i += 1
               If i = j Then Exit Do
           Loop
       Catch ex As Exception
           MsgBox(ex.Message)
           Exit Sub
       End Try
   End Sub

   Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
       j = j - 100 : If j < 0 Then j = 100
       i = i - 200 : If i < 0 Then i = 0


       Try

           Me.FlowLayoutPanel1.Controls.Clear()

           Do While (i <= num2)
               If i >= j Then Exit Do
               Dim uc As New UserControl1
               uc.Label1.Text = dt.Rows.Item(i).Item("nam").ToString
               Me.FlowLayoutPanel1.Controls.Add(uc)

               i += 1

           Loop
       Catch ex As Exception
           MsgBox(ex.Message)
           Exit Sub
       End Try
   End Sub

   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Button2.Text = "التالي"
       Button2.Enabled = False
       Button3.Text = "السابق"
       Button3.Enabled = False
   End Sub

End Class

شكرا علي الاهتمام بسؤالي لقد قمت بتنفيذ الكود

هل يمكن تغيير ازرار التالي والسابق بشريط autoscrllo في حالة الزيادة او النقصان


RE: بطي في عرض او جلب البيانات من القاعدة - Taha Okla - 21-11-22

لا أعرف طريقة مجدية بالـ Scrol
كل ما يخطر ببالي طريقة تعتمد على الاستغناء عن الـ Scrol الأساسي بواحد إضافي
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


RE: بطي في عرض او جلب البيانات من القاعدة - عبدالكريم برشدان - 29-11-22

اولا اشكر المهندس Taha Okla علي اهتمام بسؤالي وبالمجهودات التي بدلها من اجل مساعدتي وكان الطريقة جميلة ومفيدة

ثانيا اريد فكرة ثانية اضافة الي الفكرة التي طرحها المهندس Taha Okla وهي جعل زيادة السجلات من خلال autoscrllo

اي بمعني :

كل ما حركت autoscrllo الي الاسفل زاد عرض السجلات من قاعدة البيانات علي سبيل المثال + 5 علي كل حركة للسفل


وشكرا


RE: بطي في عرض او جلب البيانات من القاعدة - Taha Okla - 29-11-22

(29-11-22, 01:10 PM)عبدالكريم برشدان كتب : اولا اشكر المهندس Taha Okla علي اهتمام بسؤالي وبالمجهودات التي بدلها من اجل مساعدتي وكان الطريقة جميلة ومفيدة

ثانيا اريد فكرة ثانية اضافة الي الفكرة التي طرحها المهندس Taha Okla وهي جعل زيادة السجلات من خلال  autoscrllo

اي بمعني :

كل ما حركت  autoscrllo الي الاسفل زاد عرض السجلات من قاعدة البيانات علي سبيل المثال + 5 علي كل حركة للسفل


وشكرا


نفس الكود السابق ولكن قم بإلغاء زر التراجع
وقم بتعطيل السطر التالي من زر التالي :
كود :
'  Me.FlowLayoutPanel1.Controls.Clear()

وبدلاً من اسم (التالي أو شكل الزر) قم بتغييره للشكل الذي تريد والمكان الذي تراه مناسباً ..
وبهذه سيقوم بإضافة 100 عنصر مع كل ضغطة - أو العدد الذي تريده ..


RE: بطي في عرض او جلب البيانات من القاعدة - عبدالكريم برشدان - 01-12-22

(29-11-22, 04:50 PM)Taha Okla كتب :
(29-11-22, 01:10 PM)عبدالكريم برشدان كتب : اولا اشكر المهندس Taha Okla علي اهتمام بسؤالي وبالمجهودات التي بدلها من اجل مساعدتي وكان الطريقة جميلة ومفيدة

ثانيا اريد فكرة ثانية اضافة الي الفكرة التي طرحها المهندس Taha Okla وهي جعل زيادة السجلات من خلال  autoscrllo

اي بمعني :

كل ما حركت  autoscrllo الي الاسفل زاد عرض السجلات من قاعدة البيانات علي سبيل المثال + 5 علي كل حركة للسفل


وشكرا


نفس الكود السابق ولكن قم بإلغاء زر التراجع
وقم بتعطيل السطر التالي من زر التالي :
كود :
'  Me.FlowLayoutPanel1.Controls.Clear()

وبدلاً من اسم (التالي أو شكل الزر) قم بتغييره للشكل الذي تريد والمكان الذي تراه مناسباً ..
وبهذه سيقوم بإضافة 100 عنصر مع كل ضغطة - أو العدد الذي تريده ..
شكرا شكرا


RE: بطي في عرض او جلب البيانات من القاعدة - h2551996 - 01-12-22

(20-11-22, 06:08 PM)عبدالكريم برشدان كتب : السلام عليكم ورحمة الله وبركاته

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


وشكرا لكم .

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