17-10-12, 07:12 PM
كاتب الموضوع : egyption-coder
كود :
Imports System.Data.OleDb 'نقوم باستيراد الأتى للداتا بيز و الأم اكس ال
Imports System.Xml
'طبعا ننشئ داتا بيز و نضع بها جدول و نغير اسم الداتا بيز و الجدول فى الكود طبقا للملف الذى انشأناه
Public Class Form1
Dim strAcessFilePath As String 'متغير لتحديد امتداد الداتا بيز
Dim strXmlFilePath As String ' متغير لتخزين امتداد ملف اكس ام ال
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
strAcessFilePath = System.Windows.Forms.Application.StartupPath & "\hassan.mdb" ' تحديد امتداد الداتا بيز
strXmlFilePath = "C:\ملف بيانات العملاء.xml" 'هنا نحدد امتداد ملف اكس ام ال
GetDataFromAcessFile() 'هذا لتشغيل الصب التالى
End Sub
Private Sub GetDataFromAcessFile()
Dim aCon As OleDbConnection ' نقوم بتعريف متغيرللأتصال بالداتا بيز
Dim aCmd As OleDbCommand ' ونعرف متغير لأمر الأستعلام
Dim strCon As String ' هذا متغير لجملة الأتصال
Dim strQuery As String ' و هذا لجملة الأستعلام " السيليكتايه"م
'نبدأ فى انشاء الأتصال
strCon = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= C:\hassan.mdb ;User ID=Admin;Password="
'و يمكن استبدال هذا السطر بالذى قبله strCon = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= " & strXmlFilePath & " ;User ID=Admin;Password="
aCon = New OleDbConnection(strCon)
aCon.Open() ' نفتح الأتصال
strQuery = "Select * from Customers" 'Customers و هذا هو الأستعلام من الجدول المسمى
aCmd = New OleDbCommand(strQuery, aCon) ' وهذاامر الأستعلام
Dim da As New OleDbDataAdapter ' و الأن ادابتر لنقوم بالأستعلام و ملئ الداتا سيت ببيانات الأستعلام
da.SelectCommand = aCmd ' اولا استعلام
Dim ds As DataSet ' ثانيا انشاء داتا سيت
ds = New DataSet("Customers") ' نضع الجدول الخاص بالعملاء فى الداتا سيت
da.Fill(ds, "New Customers") 'نملأ جدول جديد بنفس بيانات الأستعلام
Dim dt As DataTable ' نعرف متغير للجدول الجديد
dt = New DataTable()
dt = ds.Tables("New Customers") 'نضع الجدول الجديد بالمتغير
CreateXMLFile() 'نقوم بأنشاء ملف اكس ام ال بأستعمال الصب الأخير فى هذا الكود
WriteToXml(dt) ' نقوم بالكتابة الى ملف الأكس ام ال باستخدام الصب التالى
aCon.Close() ' نغلق الأتصال
End Sub
Private Sub WriteToXml(ByVal Acessdt As DataTable)
'كتابة الجدول الى ملف الأكس ام ال
If Dir(strXmlFilePath).Length = 0 Then
CreateXMLFile()
End If 'لو الملف غير موجود نقوم بأنشائه باستخدام الصب الأخير
Dim XmlDoc As New XmlDocument ' نعرف محتوى للملف
Dim xNode As XmlNode ' نحدد متغير لنضع به النودز
Dim xElement As XmlElement ' و نعرف متغير للعناصر الخاصة بالملف لنضع بها عناصر الجدول
Dim NewxElement As XmlElement ' و نعرف متغير للعناصر الخاصة بالملف لنضع بها عناصر الجدول المتفرعة من الفيلدات
XmlDoc.Load(strXmlFilePath) ' حسنا الان نرفع محتويات الملف
If XmlDoc.DocumentElement.HasChildNodes = False Then ' و نتأكد انه لا توجد نودز بمحتوى الملف
Dim inti As Integer
Dim intCol As Integer
'نبدأ باضافة النودز
'هنا نتحرك صف صف
For inti = 0 To Acessdt.Rows.Count - 1 ' تم ملئه عندما قمنا بعمل لود Acessdt
xNode = XmlDoc.CreateNode(XmlNodeType.Element, "customer", Nothing) '(مجال الأسماء-اسم النود-نوع النود)
xElement = XmlDoc.DocumentElement.AppendChild(xNode)
xNode = Nothing
' فى داخل الصف نتحرك عمود عمود
For intCol = 0 To Acessdt.Columns.Count - 1
xNode = XmlDoc.CreateNode(XmlNodeType.Element, Acessdt.Columns(intCol).Caption, Nothing)’ لآحظ ان اسم النود هنا مرتبط بالعامود
NewxElement = xElement.AppendChild(xNode)
NewxElement.SetAttribute("value", Acessdt.Rows.Item(inti).Item(intCol)) ' و هنا نحدد العنصر المضاف برقم الصف و رقم العامود
Next intCol
Next
End If
XmlDoc.Save(strXmlFilePath) ' نقوم بحفظ المحتوى
End Sub
Private Sub CreateXMLFile() ' هنا ننشئ الملف
If Dir(strXmlFilePath).Length <> 0 Then ' لو الملف موجود يتم اعدامه
Kill(strXmlFilePath)
End If
Dim xTextWriter As New XmlTextWriter(strXmlFilePath, Nothing) ' نعرف رايتر لكتابة تكست الى الملف
xTextWriter.WriteStartDocument() 'الأن نقو بكتابة اصدار الملف <?xml version="1.0" ?>
xTextWriter.WriteComment("هذا الملف يحتوى على بيانات العملاء") ' الباقى لا يحتاج لشرح
xTextWriter.WriteComment("هذا المثال لأعضاء فيجوال بيزيك العرب.")
xTextWriter.WriteStartElement("Customers")
xTextWriter.WriteEndElement()
xTextWriter.WriteComment(" Egyption coder.مع تحيات")
xTextWriter.Flush()
xTextWriter.Close()
End Sub
End Class