السلام عليكم
أصدقائي كتب الكود التالي ووضعته في الكلاس
Imports System.Data.OleDb
Public Class DBConnect
' Public Con As New OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data source = |DataDirectory|\stordb.accdb")
Public ds As DataSet
Public da As OleDbDataAdapter
Public dv As DataView
Public Cmd As OleDbCommand
Public sql As String
Sub FillDataSet(sql As String, TableName As String)
ds = New DataSet
da = New OleDbDataAdapter(sql, Con)
da.Fill(ds, TableName)
dv = New DataView(ds.Tables(TableName))
End Sub
End Class
والكود التالي في الفورم
Public Class Form1
Dim MyConnect As DBConnect
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
MyConnect.FillDataSet("SELECT * FROM Store", "Store")
DataGridView1.DataSource = MyConnect.dv
End Sub
End Class
الكود في الأصل كان يتعامل مع قواعد البيانات من نوع سكول ولاكن عدلته ليتعامل مع قواعد البيانات أكسس ولاكن يظهر لي خطأ لم أعرف سببه وهذا محتواه
An unhandled exception of type 'System.NullReferenceException' occurred in WindowsApplication19.exe
Additional information: Object reference not set to an instance of an object.
أرجو المساعدة لو سمحتم
معنى الرساله انه ينقص كلمه new ضع new فى التعريفات
dim ds as new sataset و هكذا
ألف شكر أخي vb2010 لقد أصبت في إجابتك
أخي كيف لك أن تفهم فحوى الخطأ
أخي لو سمحت مانوع هذا الإتصال ( أليس هوا من النوع المباشر ) أم أنا مخطئ
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------refrence يعنى نسخه يعنى نيو
أخي اسامه الهرماوي الذي أعرفه أن كلا النوعين من الإتصال سواء مباشر أم غير مباشر يمكن كتبتهم بالكود ولاكن الإختلاف في كتابة الكود
حسب ما أنا فاهم إن عند إستخدام DataTable يكون الإتصال غير مباشر أي أنك تستدعي الجدول كامل في الذاكرة تم تقوم بالتعديل عليه وحفظه أي إستيراد كامل سجلات الجدول دفعة واحدة
فهل من تعليق للإخوة لتوضيح أكثر
الفرق بين الاتصالين هو ان الاتصال المنفصل يستعمل الداتا ادابتر اما المتصل المباشر يستعمل الكوماند و فتح وغلق الاتصال كل شويه و هو ممل ارجو تقييمى
(28-11-18, 07:16 PM)vb2010 كتب : [ -> ]الفرق بين الاتصالين هو ان الاتصال المنفصل يستعمل الداتا ادابتر اما المنفصل المباشر يستعمل الكوماند و فتح وغلق الاتصال كل شويه و هو ممل ارجو تقييمى
أعتقد والله أعلم أن كلامك صحيح وهذا الذي انا أعرفة ... إذاً إتصالي كان من النوع الغير مباشر او المنفصل
في إنتظار التوضيح أكثر من الإخوة
الوضع المتصل يستخدم Command ويقرأ البيانات بواسطة DataReader
ويضل الإتصال مفتوح طوال فترة قراءة البيانات
كود :
' Connected mode الوضع المتصل
' Command يستخدم
' DataReader يبقى الإتصال مفتوح لحين الإنتهاء من قراءة البيانات بواسطة
Dim cmd As New OleDbCommand("SELECT * FROM [tb1]", cnn)
cnn.Open()
Dim reader As OleDbDataReader = cmd.ExecuteReader
While reader.Read
MsgBox(reader.Item("Name"))
End While
cnn.Close()
الوضع المنفصل يستخدم DataAdapter ويقرأ البيانات كاملة ويضعها في جدول مؤقت DataTable
ويغلق الإتصال مباشرة بعد تعبئة الجدول المؤقت
كود :
' Disconnected mode الوضع المنفصل
' DataAdapter يستخدم
' DataTable يغلق الإتصال بعد شحن البيانات في الجدول المؤقت
Dim da As New OleDbDataAdapter("SELECT * FROM [tb1]", cnn)
Dim dt As New DataTable
da.Fill(dt)
For i = 0 To dt.Rows.Count - 1
MsgBox(dt.Rows(i).Item("Name"))
Next
منقول من أحد الدروس القديمة
(28-11-18, 08:17 PM)rmnr كتب : [ -> ]الوضع المتصل يستخدم Command ويقرأ البيانات بواسطة DataReader
ويضل الإتصال مفتوح طوال فترة قراءة البيانات
كود :
' Connected mode الوضع المتصل
' Command يستخدم
' DataReader يبقى الإتصال مفتوح لحين الإنتهاء من قراءة البيانات بواسطة
Dim cmd As New OleDbCommand("SELECT * FROM [tb1]", cnn)
cnn.Open()
Dim reader As OleDbDataReader = cmd.ExecuteReader
While reader.Read
MsgBox(reader.Item("Name"))
End While
cnn.Close()
الوضع المنفصل يستخدم DataAdapter ويقرأ البيانات كاملة ويضعها في جدول مؤقت DataTable
ويغلق الإتصال مباشرة بعد تعبئة الجدول المؤقت
كود :
' Disconnected mode الوضع المنفصل
' DataAdapter يستخدم
' DataTable يغلق الإتصال بعد شحن البيانات في الجدول المؤقت
Dim da As New OleDbDataAdapter("SELECT * FROM [tb1]", cnn)
Dim dt As New DataTable
da.Fill(dt)
For i = 0 To dt.Rows.Count - 1
MsgBox(dt.Rows(i).Item("Name"))
Next
منقول من أحد الدروس القديمة
إذا ما نوع الإتصال المستخدم لدي