السلام عليكم
اخواني اانا اعرف كيف اعبأ Dataset بواسطة DataAdapter ومن ثم ارسالها الى التقرير للعرض ..
ولكني اريد ان اعرف كيف ( الكود ) تعبئة Dataset بواسطة DataReader ومن ثم ارسالها الى التقرير ؟؟
ولكم الشكر والتقدير
السلام عليكم
اخواني اانا اعرف كيف اعبأ Dataset بواسطة DataAdapter ومن ثم ارسالها الى التقرير للعرض ..
ولكني اريد ان اعرف كيف ( الكود ) تعبئة Dataset بواسطة DataReader ومن ثم ارسالها الى التقرير ؟؟
ولكم الشكر والتقدير
السلام عليكم
الطريقة بسيطة, بحيث تعرف DataSet و جدول DataTable و أعمدة إليك ذلك.
Private MainDataSet As New DataSet
Private TableObj As New DataTable
Private CustomerID As New DataColumn("CustomerID")
Private Shadows CompanyName As New DataColumn("CompanyName")
Private ContactName As New DataColumn("ContactName")ثم في حدث التحميل نضم الاعمدة إلى الجدول بهذا الشكل.
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
' Add all columns
TableObj.Columns.Add("CustomerID")
TableObj.Columns.Add("CompanyName")
TableObj.Columns.Add("ContactName")
End Subثم نقوم بتحميل البيانات في الزر Fill بهذا الشكل.
Private Sub btnFill_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnFill.Click
' Create Local connection for the Asynchronous Operation.
Using cnn As New SqlConnection( _
"Data Source=.;Initial Catalog=Northwind;Integrated Security=SSPI;Async=True")
' Create local sqlcommand
Using cmd As New SqlCommand("SELECT * FROM Customers", cnn)
' Open connection object.
cnn.Open()
' Declare an interface of IAsyncResult.
Dim IAS As IAsyncResult = cmd.BeginExecuteReader()
' Check if no result yet..
If Not IAS.IsCompleted Then
' Tell user object still busy..
lblResult.Text = " Still executing, please wait.."
Me.lblResult.Refresh()
End If
' Create local sqlReader object.
Using rdr As SqlDataReader = cmd.EndExecuteReader(IAS)
' Add all rows to the available columns.
While rdr.Read
Dim row As DataRow = TableObj.NewRow()
row("CustomerID") = rdr("CustomerID")
row("CompanyName") = rdr("CompanyName")
row("ContactName") = rdr("ContactName")
End While
' Close connection object.
cnn.Close()
' Add table to the dataset.
MainDataSet.Tables.Add(TableObj)
' Instintiate an object from customersReport class.
Dim rpt As New CustomersReport
' Assign dataset as datasource of object report.
rpt.SetDataSource(MainDataSet)
' Assign report object to View as source
CRV.ReportSource = rpt
' Tell user that report & data loaded successfully.
lblResult.Text = " Data Loaded Successfully..."
End Using
End Using
End Using
End Subاستخدمنا في هذا المثال تقنية جديدة في الـ SQLCommand وهي عملية التزامنية Asynchronous
متطلبات تشغيل المرفق : SQL 2005 + VS.NET 2005 + Northwind Database
بالتوفيق إن شاء الله.
في المثال يتضح المقال
اخي الغملاسي عندي سؤال مبدئي ..
' Create Local connection for the Asynchronous Operation. Using cnn As New SqlConnection( _ "Data Source=.;Initial Catalog=Northwind;Integrated Security=SSPI;Async=True")
مافائدة Async=True ؟؟
وهل هي خاصة بالـ 2005 ؟؟
بالنسبة للمثال انا اشتغل على 2003 للأسف :( :unsure: !!
تم تعديل هذه المشاركة بواسطة ابوخالد العيدروس في 12 ديسمبر 2006 في 20:15
السلام عليكم
اقتباسمافائدة Async=True ؟؟
هذه عبارة عن صفة attribute فتكتب اما Async=True أو Asynchronous Processing=true
الفائدة: منها أنها تجعل عنصر الاتصال داعم للعمليات التزامنية Support Asynchronous Operation
اقتباسوهل هي خاصة بالـ 2005 ؟؟
نعم أخي العزيز هي خاصة للنسخة ADO.NET 2.0
اقتباسبالنسبة للمثال انا اشتغل على 2003 للأسف
يمكنك تغيير الكود إلى هذا الشكل حتى يعمل على 2003
Private Sub btnFill_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnFill.Click
' Create Local connection for the Asynchronous Operation.
Dim cnn As New SqlConnection( _
"Data Source=.;Initial Catalog=Northwind;Integrated Security=SSPI;")
' Create local sqlcommand
Dim cmd As New SqlCommand("SELECT * FROM Customers", cnn)
' Open connection object.
cnn.Open()
' Create local sqlReader object.
Dim rdr As SqlDataReader = cmd.ExecuteReader
' Add all rows to the available columns.
While rdr.Read
Dim row As DataRow = TableObj.NewRow()
row("CustomerID") = rdr("CustomerID")
row("CompanyName") = rdr("CompanyName")
row("ContactName") = rdr("ContactName")
End While
' destroy objects.
cmd.Dispose()
rdr.Close()
cnn.Close()
With MainDataSet
.Tables.Clear()
.Tables.Add(TableObj)
End With
' Instintiate an object from customersReport class.
Dim rpt As New CustomersReport
' Assign dataset as datasource of object report.
rpt.SetDataSource(MainDataSet)
' Assign report object to View as source
CRV.ReportSource = rpt
End Subبالتوفيق إن شاء الله.
في المثال يتضح المقال
الف شكر استاذي الغملاسي
يعطيك العافية
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…