منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : سوال في تصدير البيانات (مهم)
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السـلام عليكم روحمة الله وبركاته 

أخواني عندي في برنامج الأكسس بيانات كبيره جداً تفوق 40 ألف سجل ومسويه بطريقه يدويه وليست مرتبطه ببرنامج 

الأن حاب أعمل برنامج بسكيول سيرفر وأربط القاعده مع النظام 

السـؤال هل يوجد طريقه لنقل البيانات بطريقه برمجيه
فيه طريقة جلب ببرنامج السكول سيرفر من الاكسس او الاكسل 

فيه طريقة أخرى وهي الربط مع سكول سيرفر 

ونصيحة قبل كل العليات على القاعدة اعمل نسخه احتياطية 

شاهد هذا الفديو 






وفيه طريقه ثانيه وجيدة وسهله import

[color=var(--ytd-video-primary-info-renderer-title-color, var(--yt-primary-text-color))]data from access to sql server[/color]



وعليكم السلام ورحمة الله وبركاته

هذا مثال على التحويل برمجيا

http://www.mediafire.com/download/znknco...sToSQL.rar

المصدر
http://accountprog.blogspot.com/
يعطيكم العافيه على تجاوبكم معي 
ولكن الفكره هي نقل البيانات من الاكسس إلى الاسكيول بشكل نهائي وعدم عمل أرتباط لها
(05-09-18, 02:05 PM)DOX.1 كتب : [ -> ]يعطيكم العافيه على تجاوبكم معي 
ولكن الفكره هي نقل البيانات من الاكسس إلى الاسكيول بشكل نهائي وعدم عمل أرتباط لها

اعمل داتابيز في اسكيوال سيرفر وانشئ جدول بنفس خصائص جدول الاكسس .

وأكتب كود في الفيجوال ستوديو وظيفته عمل استعلام لكامل بيانات جدول الاكسس وخزنها في داتاتيبل .

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

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

طريقة مجربة .
(05-09-18, 02:56 PM)حريف برمجة كتب : [ -> ]
(05-09-18, 02:05 PM)DOX.1 كتب : [ -> ]يعطيكم العافيه على تجاوبكم معي 
ولكن الفكره هي نقل البيانات من الاكسس إلى الاسكيول بشكل نهائي وعدم عمل أرتباط لها

اعمل داتابيز في اسكيوال سيرفر وانشئ جدول بنفس خصائص جدول الاكسس .

وأكتب كود في الفيجوال ستوديو وظيفته عمل استعلام لكامل بيانات جدول الاكسس وخزنها في داتاتيبل .

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

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

طريقة مجربة .
تسلم يدك 

ممكن مثال ما عمري تعاملت مع أكسس
(05-09-18, 02:05 PM)DOX.1 كتب : [ -> ]يعطيكم العافيه على تجاوبكم معي 
ولكن الفكره هي نقل البيانات من الاكسس إلى الاسكيول بشكل نهائي وعدم عمل أرتباط لها
والمثال تطبيق لهذة الفكرة 

وشرح الفكرة كمال قال الأخ الفاضل 
(05-09-18, 02:56 PM)حريف برمجة كتب : [ -> ]اعمل داتابيز في اسكيوال سيرفر وانشئ جدول بنفس خصائص جدول الاكسس .

وأكتب كود في الفيجوال ستوديو وظيفته عمل استعلام لكامل بيانات جدول الاكسس وخزنها في داتاتيبل .

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

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

طريقة مجربة .

(05-09-18, 03:24 PM)DOX.1 كتب : [ -> ]تسلم يدك 

ممكن مثال ما عمري تعاملت مع أكسس
الملف السابق يحتوى على المثال
مع الشرح بالتفصيل للخطوات
وعليكم السلام ورحمة الله وبركاته

خلاف ان رد الاخ hglogtd
لمخص كل ما تريده خصوصاً فى الفيديو الثاني
دون اى معاناه او تعب فى تحويل قاعدة البيانات

رغم طلبك للطريقة الذى شرحها الاخ حريف برمجة
حيث انه تم ارفاقها كا سورس من خلال الاخ princelovelorn
من حيث تشابه الفكرة 

اليك سورس يوضح الفكرة اكثر لطريقة نقل البيانات من قاعدة بيانات الى اخري
تذكر السورس المرفق ما هو الا مثال بسيط وعليك من تطوير الفكرة وتم عمله حتى تعم الفائدة

صورة البرنامج


صورة انشاء جدول قاعدة البيانات Access


البيانات داخل جدول قاعدة بيانات الـ Access


الان عليك انشاء قاعدة بيانات Sql وتجعل الجدول طبقاً بيانات التالى


عند تشغيل البرنامج لنقل البيانات من Access الى Sql
ستجد البيانات بالنهاية فى جدول Sql بهذا الشكل


كود الفورم كاملاً المستخدم فى السورس
كود :
Imports System.Data.OleDb
Imports System.Data.SqlClient
Imports System.Globalization
Imports System.Threading

Public Class Form1

   ' Access Database 2007 : Up
   Dim strAcc As String = "provider=microsoft.ace.oledb.12.0;data source=" & Application.StartupPath & "\Database.accdb"
   Dim conAcc As OleDbConnection = New OleDbConnection(strAcc)
   Dim adpAcc As OleDbDataAdapter
   Dim cmmAcc As OleDbCommandBuilder
   Dim comAcc As OleDbCommand

   ' Sql Server Database
   Dim conSql As SqlConnection = New SqlConnection("Data Source=.;Initial Catalog=Database;Integrated Security=True")
   Dim adpSql As SqlDataAdapter

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

       ' Select Data Access Database
       Dim dtAcc As New DataTable
       dtAcc.Clear()
       Dim SelectAcc As String = "SELECT * FROM " & TextBox1.Text
       adpAcc = New OleDbDataAdapter(SelectAcc, conAcc)
       cmmAcc = New OleDbCommandBuilder(adpAcc)
       adpAcc.Fill(dtAcc)

       ' Insert Data Sql Server
       Dim cmd As New SqlCommand
       cmd.CommandType = CommandType.Text
       cmd.Connection = conSql
       If conSql.State = ConnectionState.Closed Then conSql.Open()
       For ii As Integer = 0 To dtAcc.Rows.Count - 1
           Dim SelectSql As String = "INSERT INTO " & TextBox2.Text & " (MyName, DateDay) VALUES ('" & dtAcc(ii)(1) & "', '" & dtAcc(ii)(2) & "')"
           cmd = New SqlCommand(SelectSql, conSql)
           cmd.ExecuteNonQuery()
       Next
       conSql.Close()



       MsgBox("Complete the data import successfully.")

   End Sub

   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       ' هذا السطر لجعل التاريخ ميلادى تجنباً لحدوث اى مشكلة فى التواريخ بين الهجري والميلادي عند النقل
       Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US")
   End Sub
End Class

تذكر عليك ان تجعل الرنامج يعمل على بيئة 32Bit وليس AnyCPU 
تجنباً من حدوث اى مشكلة تحدث بسبب قواعد بيانات الـ Access

مرفق السورس + برنامج للاختبار مع قواعد البيانات الموضحة بالرد مع صور الرد
السورس (2015)

تحياتى لك وللجميع
وتمنياتى للجميع التوفيق
الله يعطيكم العافيه 

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

أحب أضيف في أسكيول سيرفر أعمده جديده عمود code_Emp هذا أعمله فورمات ليصبح السجل رقم 1 

عمود id =1  عمود code_Emp = EM00001

هذه ليست موجوده في قاعدة البيانات القديمه وأحب أضيفها في القاعده الجديده وكذلك 
والأستفسـار الأخر 

إذا أضفت أعمده جديده كيف أملأها ببيانات مثلاً عند النقل من القاعده القديمه إلى الجديده أكتب لي في الحقول الجديده نص "غير معروف"


معليش طولت عليكم
(06-09-18, 01:40 PM)DOX.1 كتب : [ -> ]الله يعطيكم العافيه 

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

أحب أضيف في أسكيول سيرفر أعمده جديده عمود code_Emp هذا أعمله فورمات ليصبح السجل رقم 1 

عمود id =1  عمود code_Emp = EM00001

هذه ليست موجوده في قاعدة البيانات القديمه وأحب أضيفها في القاعده الجديده وكذلك 
والأستفسـار الأخر 

إذا أضفت أعمده جديده كيف أملأها ببيانات مثلاً عند النقل من القاعده القديمه إلى الجديده أكتب لي في الحقول الجديده نص "غير معروف"


معليش طولت عليكم


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

لان انت ستتعامل مع المسميات طبقاً للسطر التالى
كود :
          Dim SelectSql As String = "INSERT INTO " & TextBox2.Text & " (MyName, DateDay) VALUES ('" & dtAcc(ii)(1) & "', '" & dtAcc(ii)(2) & "')"

فلاحظ هنا اسم MyName يمكنك مثلاً جعله اى اسم اخر فى الجدول 
لكن عليك وضع الاسم فى السطر الاعلى للاسم الذى قمت بتسميته
يمكنك اضافة اى عمود كما تشاء لانك بالنهاية عند ترحيل البيانات بترحل بناءاً

اسم عمود محدد فى السطر كما فى الاعلى الى قيمة يتم تحديدها من عمود محدد كما هو هنا 
PHP كود :
dtAcc(ii)(1

ولاحظ ان القيمة هنا تعنى العمود الثاني ويمكنك استخدامه بهذا الشكل
PHP كود :
dtAcc(ii)("MyName"

لو تلاحظ ان عمود الـ ID غير مستخدم فى الترحيل البيانات من جدول لاخر
لانه عبارة عن ترقيم تلقائي فلا يلزم ترحيل القيمة من جدول الى اخر بما انه ترقيم تلقائي

من الممكن يكون لديك جدول عبارة عن بيانات التالى

1     ahmed     datenow
5     mohamed     datenow

بحيث الترقيم 1 5 6 7 8
بسبب تم حذف من 2: 4 مسبقاً

هنا عند الاضافة فى قاعدة بيانات الـ Sql ستجد ترقيمهم
1 2 3 4 5  وليس 1 5 6 7 8 

انت كل ما عليك فعله فقط فى الاعمدة الجديدة التى تتواجد فى قاعدة البيانات sql
ان تجعلها تقبل قيمة فارغة أو ان تجعل لها قيمة افتراضية وبكده لم يحدث معك اى مشكلة

تحياتى لك
وتمنياتى لك التوفيق