الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

نقل بينات من قاعدة Sql Server الى قاعدة Access ؟؟؟

بدأه ابوخالد العيدروس في 7 يوليو 2008 · 14 رد · 1,625 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ..

سؤالي يااخوان هو كيفية نقل او نسخ بيانات من قاعدة بيانات Sql Server 2000 الى قاعدة بيانات Access ؟؟؟

اعرف بأنه لو كانت نفس قاعدة البيانات فستكون جملة الاستعلام كالتالي :

insert into tblname select * from tblname2

لكني اريد ان انقل بين قاعدتين مختلفتين .. بالتالي يختلف ال ConnectionString ...

علما بأن المطلوب في سؤالي هو من جدول الى جدول لهما نفس التصميم ؟؟!!

وشاكر لكم تعاونكم دائما

تم تعديل هذه المشاركة بواسطة ابوخالد العيدروس في 7 يوليو 2008 في 23:54

#3

السلام عليكم

الاخ الكريم ابوخالد العيدروس لقد كنت اعمل على القيام ببعض التعديلات على احدى المنظومات والتى كانت قاعدة بياناتها بارادوكس

ثم اقرار قلب قاعدة البيانات الى MSAccess فما كان منى الا ان قمت بالبحث فوجدت التالى فى delphi.about ولكن قمت باستخلاص ما احتاجه فقط من هذه الصفحة وهو شبيه الى حد كبير بالمرفق بالاسفل

تحويل قاعدة بيانات

فى المرفقات تطبيق بسيط كل ما عليك هو ربط adoconnection الاولى بقاعدة البينات لل sql server والثانية اربطها بقاعدة الاكسس

ثم قم باختيار الجدول من هنا ثم نفس الجدول لكن من قاعدة البيانات الاخرى ثم ابنى التطبيق ثم اغط على زر النقل

وذلك لكل جدول لوحده

واذا رأيت انها طريقة معقدة فبإمكانك استخدام الطريقة التى فى رابط الموقع فى الاعلى

Data_Transfere.rar

#4

شكرا اخوي hazzoom

لكن يبدو انك لم تفهم سؤالي ..

جزاك الله خير اخوي c_vita

لكن المرفق مكتوب بلغة لااعرف كيف افتح الكود فيها ..

وكذلك الرابط ...

شكرا اخوي hazzoom

لكن يبدو انك لم تفهم سؤالي ..

جزاك الله خير اخوي c_vita

لكن المرفق مكتوب بلغة لااعرف كيف افتح الكود فيها ..

وكذلك الرابط ...

انا اشتغل على vb.net

#5

ألست تريد نقل بيانات من جدول في قاعدة SQL Server الي جدول بنفس التصميم في قاعدة Access؟

نعم اكتب برنامج يقوم بالمهمه :)

برنامج يتصل بالقاعده الأولي ويقرأ الجدول ويقوم بعمل Loop علي الـ Rows وينسخها الي الجدول في القاعده الثانيه ما المشكله في ذلك!!

#6

اخوي hazzoom ...

فكرتك ممكنة لو كان لدي جدول واحد فقط او جدولين ...

لكن المشكلة ان لدي اكثر من 10 جداول ...

وكل جدول يحتوي على الاقل على 6 حقول وبالتالي من الصعب جدا ان اقوم لعمل Loop ..

شكرا جزيلا لك على تواصلك

#7

السلام عليكم

الخطوات ببساطة ( لجدول واحد الآن) وارجو ان يكون عندك المام بها :

1-اقتح DataReader على جدول SQL server مثلا بالاسم DR

2-اقتح DataTable على جدول Access مثلا بالاسم DT طبعا مع اتصال مختلف عن الاول

3- نعمل Loop على صفوف DR لنهاية الجدول يعني قراءة DataReader

4-للتخزين نعرف DataRow مثلا newRow ونخزن كما يلي

		newRow = dt.NewRow
		For index As Integer = 0 To dr.FieldCount - 1
			newRow(index) = dr(index)
		Next
		dt.Rows.Add(newRow)

يتبع ....

----------------------------

من اكسس الى SQL server اسهل باستخدام Bulkcopy ولي موضوع حولها

وايضا لي مشاركة لمثل هذا السؤال لكن في VB6

تم تعديل هذه المشاركة بواسطة TareqVB في 9 يوليو 2008 في 21:13

#8

الله يعطيك الف عافية اخوي TareqVB

جاري التجربة ..

ولكن عندي سؤال هو كيف احفظ DT في جدول Access ؟؟

وفي انتظار مايتبع .........

بالنسة لـ Bulkcopy ..

مشكلتها انها تعمل نسخ فقط ..

ولكن مالحل في حال كنت اريد عمل اضافة لما هو غير موجود وتحديث لما هو موجود ؟؟؟

وشكرا جزيلا لك

تم تعديل هذه المشاركة بواسطة ابوخالد العيدروس في 10 يوليو 2008 في 18:14

#9

اخي TareqVB

هذا هو الكود الذي استخدمته ...

Dim cmd As New SqlCommand("SELECT * FROM " & RID & , SQLCON)
					SQLCON.Open()
					Dim rd As SqlDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)

					Dim dt As New DataTable
					Dim newRow As DataRow

					While rd.Read()
						newRow = dt.NewRow
						For index As Integer = 0 To rd.FieldCount - 1
							newRow(index) = rd.Item(index)
						Next
						dt.Rows.Add(newRow)
						Dim adp As New OleDbDataAdapter("SELECT * FROM " & RID, AccCON)
						Dim buld As New OleDbCommandBuilder(adp)
						adp.Update(dt)
					End While

					rd.Close()

وعند التنفيذ تظهر لي رسالة الخطأ التالية

could not find column 0

فما الخطا ؟؟؟؟

شكرا جزيلا

تم تعديل هذه المشاركة بواسطة ابوخالد العيدروس في 10 يوليو 2008 في 19:09

#10

السلام عليكم

بحاجة الى تعديل بسيط وهو فتح الاتصال مع الاكسس وتعبئة بيانات الجدول

التعديلات كمايلي

 Dim cmd As New SqlCommand("SELECT * FROM " & RID & , SQLCON)
			SQLCON.Open()
			Dim rd As SqlDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)

			Dim dt As New DataTable
			Dim newRow As DataRow
			' ------------------------------

			Dim adp As New OleDbDataAdapter("SELECT * FROM " & RID, AccCON)
			Dim buld As New OleDbCommandBuilder(adp)
			adp.Fill(dt, rid)  '<<<<<<
			' ------------------------------

			While rd.Read()
				newRow = dt.NewRow
				For index As Integer = 0 To rd.FieldCount - 1
					newRow(index) = rd.Item(index)
				Next
				dt.Rows.Add(newRow)
			End While
			adp.Update(dt)
			rd.Close()
#14

السلام عليكم

لا اعرف ماذا حصل في المشاركة السابقة ولم هي غير مكتملة .

فقد اردت ان اقول انه يمكنك الحصول على اسماء جميع الجداول في قاعدة بيانات SQL server عن طريق الاستعلام التالي

select name from sysobjects where type= 'U'

فيمكنك ايضا ارجاعه عن طريق DataReader وعمل loop على جميع الجدوال

مواضيع مشابهة