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

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : الأقسام التعليمية - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=90)
+--- قسم : مكتبة أكواد المنتدى (http://vb4arb.com/vb/forumdisplay.php?fid=111)
+---- قسم : مكتبة أكواد .net (http://vb4arb.com/vb/forumdisplay.php?fid=117)
+---- الموضوع : كيفية نقل بيانات من قاعدة بيانات اكسس الى ملف اكس ام ال (/showthread.php?tid=6297)



كيفية نقل بيانات من قاعدة بيانات اكسس الى ملف اكس ام ال - RaggiTech - 17-10-12

كاتب الموضوع : 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