بطي في عرض او جلب البيانات من القاعدة - عبدالكريم برشدان - 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)عبدالكريم برشدان كتب : السلام عليكم ورحمة الله وبركاته
ارفق لكم مثال اواجه في مشكلة في بطي في جلب البيانات من القاعدة واريد حل مماثل يساعدني علي حل المشكلة وتسريع في جلب او عرض البيانات
وشكرا لكم .
فقط كل ما عليك هو تفعيل هذا الخيار
وتمتع بسرعة جلب البيانات
|