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

طلب عمل مشروع ( ربط قاعدة بيانات اكسس مع قاعدة بيانات mysql )

بدأه etheer في 15 أغسطس 2013 · 32 رد · 3,151 مشاهدة · في قواعد بيانات MySQL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

عندي طلب اتمنا اجد من يساعدني

اريد ربط قاعدة بيانات اكسس مع قاعدة بيانات  mysql و الربط يكون حيوي اي اي تغير في خلايا الاكسس يتغير علي قاعدة بيانات mysql

 

هل ممكن عمل ذلك ام مستحيل ؟

#2

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

  1. يمكنك ربط الجداول الموجودة بالــ MYSQL  مع الأكسس ..
  2. راجع الروابط الموجودة في الموضوع -مشكلة-اعداد-mysql-odbc-مع-السيرفر/
  3. -درس-عن-ربط-mysql-لاكثر-من-جهاز

يرجى وضع المواضيع في المنتدى المناسب .. ينقل لقسم الــ MYSQL  ..

تم تعديل هذه المشاركة بواسطة حسام الشامي في 15 أغسطس 2013 في 10:39

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#3

الف شكر اخي علي الرد عندي سوال

برنامج  mysqlworkbench هل يمكن بواسطة عمل ربط بين الاكسس وقاعدة بيانات ربط حيوي  اعني انة اي تغير في قاعدة بيانات الاكسس في نفس الوقت تتغير الخلايا في قاعدة بيانات mysql

لو يمكن ذلك هل تتكرم و تعطيني شرح او رابط لشرح الربط بين الاكسس و قاعدة بيانات mysql

#4

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

  1. الــ  mysqlworkbench يستخدم للاتصال بالــ MYSQL  و استعراض قواعد البيانات و الجداول فيها و المستخدمين و باقي التفاصيل الأخرى .
  2. انت ستقوم بربط الاكسس بالــ MYSQL  يعني استيراد الجداول .. و بالتالي عندما تفتح اي جدول و تغيير البيانات فيه , فهذا يعني تغيير البيانات في الــ MYSQL  .لأن الجدوال مخزنة في الــ MySql  .
  3. الروابط السابقة كافيه باعتقادي و هي تحوي الصور المطلوبة ....
  4. ابدأ العمل و عندما تقف عند مشكلة , لا تتردد بالسؤال عنها .

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#5

الف شكؤ  اخي حسام علي الاهتمام و الرد

عندي استفسار اخر اتمنا يتسع  صدرك لكثرة اسالتي

هل من الممكن ربط ورقة اكسل مغ قاعدة بيانات  mysql ?

تم تعديل هذه المشاركة بواسطة etheer في 15 أغسطس 2013 في 21:30

#6

صار لية اكثر من اسبوعين اجوب المنتديات الاجنبية و العربية ابحث عن طريقة لربط الاكسل بقاعدة بيانات mysql

حصلت عدد من اكود vba  مع ado.net

لكن لا تعمل بالصورة المطلوبة لعدم خبرتي بالتعامل مع الاكود و ado.net

#7

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

اهلا بك أخي ..

  1. يمكن ربط MySql  مع الاكسل بعدة طرق .
    1. عن طريق ODBC    (رابط آخر) .
    2. عن طريق MySQL for Excel  Add-In 
  2. بالنسبة لأكواد .NET  فهي تعتمد على الاستيراد و التصدير (راجع الموضوع مشكلة في تصدير البيانات الذي يقوم بنقل البيانات من Excel  إلى Sql Server  عن طريق اكواد .NET) .
  3. لو اردت التصدير (تصدير البيانات الي الاكسل) .

تم تعديل هذه المشاركة بواسطة حسام الشامي في 16 أغسطس 2013 في 00:22

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#8

1- عملت ربط  الاكسس مع قاعدة بيانات mysql  و تم الربط بنجاج  اي  ان تغير في خلية  الاكسس او mysql  تتغير في نفس الوقت ربط حيوي  بعد ذلك  عملت ربط لنفس قاعدة البيانات الاكسس مع ورقة  اكسل  العرض ان اي تغير فية خلية الاكسل يتغير في قاعدة بيانات الاكسس ومن ثم تتغير في قاعدة بيانات mysql

 

الغرض ان كل هدفي اربط ورقة اكسل مع قاعدة بيانات mysql  لكن فشلت

 

 

2-  المحاولة الثانية اتجهت الي اكواد vba  لعمل تصدير لبيانات ورقة اكسل الي قاعدة بيانات mysql  فا اتستخدمت هذا الكود

 

 

 


Sub InsertIntoMySQL()

  Dim height As Long

  Dim rowtable As Long

  Dim strSQL As String



  Dim oConn As ADODB.Connection

  Dim rs As ADODB.Recordset



  On Error GoTo ErrHandler

  Set rs = New ADODB.Recordset

  Set oConn = New ADODB.Connection



  oConn.Open "DRIVER={MySQL ODBC 5.2 ANSI Driver};" & _

    "SERVER=localhost;" & _

    "DATABASE=etheer;" & _

    "USER=root;" & _

    "PASSWORD=1234;" & _

    "Option=3"



  'number of rows with records

  height = Worksheets("Sheet1").UsedRange.Rows.Count

  height = 3



'insert data into SQL table

  With Worksheets("Sheet1")

    For rowtable = 2 To height

        strSQL = "INSERT INTO M1 (column1, column2, column3) " & _

          "VALUES ('" & esc(Trim(.Cells(rowtable, 1).Value)) & "', '" & _

          esc(Trim(.Cells(rowtable, 2).Value)) & "', '" & _

          esc(Trim(.Cells(rowtable, 3).Value)) & "')"

       

          oConn.Execute strSQL

    Next rowtable

  End With

  MsgBox "Insert with success " & Trim(Str(rowtable - 2)) & " records", _

    vbInformation, "Verification Data Entry"

   

ErrHandler:

  If Err.Description <> "" And Err.Source <> "" Then

    MsgBox Err.Description, vbCritical, Err.Source

  End If

End Sub



'remove dangerous characters

Function esc(txt As String)

  esc = Trim(Replace(txt, "'", "\'"))

End Function


الكود شغال و يقوم بتصدير بيانات من ورقة الاكسل الي قاعدة بيانات  mysql

 

 

لكن مشكلتي في الكود وهي

 

 

1- كل مرة اشغل الكود يعمل اضافة للخلايا في قاعدة بيانات mysql و انا اريدة كل مرة اعمل تشغيل للكود يحدث البيانات اعني كل ما اغير في خلية في الاكسل شي و اعمل تشغيل للكود يحدث نفس عدد الجدول و الصفوف بدون تكرار كتابتها مرة اخري في قاعدة بيانات mysql

 

اتمنا تساعدني سوي بالربط ورقة اكسل مع قاعدة بيانات mysql   او من خلال اكواد vba  بشرط الكود كل ما اشغلة يعمل تحديث للبيانات 

 

 

تم تعديل هذه المشاركة بواسطة حسام الشامي في 16 أغسطس 2013 في 14:48 — السبب: تنسيق الكود بالرمز <>

#9

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

نقوم بعمل update  فإذا لم يكن هناك سجل موجود نقوم بعمل Insert  ... على فرض أنه لدينا عمود ترقيم تلقائي هو column1  .. 

Sub InsertIntoMySQL()
  Dim height As Long
  Dim rowtable As Long
  Dim strSQL As String


  Dim oConn As ADODB.Connection
  Dim rs As ADODB.Recordset


  'On Error GoTo ErrHandler
  Set rs = New ADODB.Recordset
  Set oConn = New ADODB.Connection


  oConn.Open "DRIVER={MySQL ODBC 5.2 ANSI Driver};" & _
    "SERVER=localhost;" & _
    "DATABASE=mydb;" & _
    "USER=root;" & _
    "PASSWORD=root;" & _
    "Option=3"


  'number of rows with records
  height = Worksheets("Sheet1").UsedRange.Rows.Count
  height = 3


'insert data into SQL table
Dim recordsAffected As Long

  With Worksheets("Sheet1")
    For rowtable = 2 To height
    x1 = esc(Trim(.Cells(rowtable, 1).Value))
    x2 = esc(Trim(.Cells(rowtable, 2).Value))
    x3 = esc(Trim(.Cells(rowtable, 3).Value))
        strSQL = "UPDATE M1 SET column2 = '" & x2 & "', column3 = '" & x3 & "' WHERE column1 ='" & x1 & "'"
        oConn.Execute strSQL, recordsAffected
         'MsgBox "recordsAffected=" & recordsAffected
         If recordsAffected = 0 Then
           strSQL = "INSERT INTO M1 (column1, column2, column3) " & _
           "VALUES ('" & x1 & "', '" & x2 & "', '" & x3 & "')"
       
         oConn.Execute strSQL, recordsAffected
         End If
    Next rowtable
  End With
  MsgBox "Insert with success " & Trim(Str(rowtable - 2)) & " records", _
    vbInformation, "Verification Data Entry"
   
ErrHandler:
  If Err.Description <> "" And Err.Source <> "" Then
    MsgBox Err.Description, vbCritical, Err.Source
  End If
End Sub

 كان يمكن استخدام العبارة Insert on duplicate  رابط .

تم تعديل هذه المشاركة بواسطة حسام الشامي في 16 أغسطس 2013 في 15:36

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#10

الف الف شكر اخي حسام علي مساعدتك لي

طلب اتمنا عملة هو تعديل هذا ملف الاكسل فية 36 عمود و 164 صف  حاولت اضيفها في نفس الكود لكن لم اعرف كيف اضيفها ياليت تعدل لي نفس ملف الاكسل 

 

http://www.2shared.com/file/IM2vd0ca/Excel2MySQL.html

#11

الكود الذي ارفقتة لي

1- عملت قاعدة بيانات

 

Baz9O.png

 

I4Sru.png

 

2- عملت تحرير في خلايا الاكسل 3 اعمدة

 

OZLIe.png

 

3- شغلت المكرو فا ظهرت لي رسالة الخطاء

 

 

mBv5Z.png

 

 

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

تم تعديل هذه المشاركة بواسطة etheer في 16 أغسطس 2013 في 18:12

#12

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

اجعل السطر هكذا :

oConn.Open "DRIVER={MySQL ODBC 5.2 ANSI Driver};SERVER=localhost;DATABASE=etheer;USER=root;PASSWORD=1234;Option=3"

 بسطر واحد

و اضف الدالة :

Function esc(txt As String)
  esc = Trim(Replace(txt, "'", "\'"))
End Function

هل كل سطر بالاكسل هو سجل في الــ MYSQL  أم أنك تتعامل معه على اعتبار كل ثلاثة اعمدة يمثلون سجل بالــ MYSQL .؟

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#13

بعد التعديل اشتغل الكود لكن حصلت معاية مشكلة

 

عدلت العمود A من الرقم  1010 الي الرقم  2000

 

وشغلت الكود

 

avN2G.png

 

وظهرت رسالة  انة تم ادخل البيانات بنجاج

 

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

 

3Wjlf.png

 

لاحظ انة اضاف صف جديد  الذي فية  الرقم 2000

 

نفس المشكلة يكرر ولا يحدث البيانات نفس خلايا

#14

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

صديقي .

سألت في مشاركتي السابقة : 

اقتباس

 

 

هل كل سطر بالاكسل هو سجل في الــ MYSQL  أم أنك تتعامل معه على اعتبار كل ثلاثة اعمدة يمثلون سجل بالــ MYSQL .؟

و لم تجبني عليه ..

المشكلة أننا نريد مفتاح أو حقل لربط السجل من الاكسل مع السجل في الــ MYSQL  و انا اقترحت عليك وجود حقل ترقيم تلقائي في مشاركة ما قبل سابقة .

أما لماذا يحصل تكرار , فلأنك قمت بتغيير الحقل الذي نربط به و هو موجود بالعبارة WHERE  في الجملة UPDATE  .

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#15

هل كل سطر بالاكسل هو سجل في الــ MYSQL  أم أنك تتعامل معه على اعتبار كل ثلاثة اعمدة يمثلون سجل بالــ MYSQL .؟

 

اتعامل معاة علي انة كل خلية في الاكسل  اريد تحدث نفسها في mysql عندما اغير الخلية في الاكسل و اعمل تحديث للبيانات اريد نفس الخلية هي تتحدث ولا يضيف خلايا جديدة

#16
حسام الشامي كتب:

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

صديقي .

سألت في مشاركتي السابقة : 

و لم تجبني عليه ..

المشكلة أننا نريد مفتاح أو حقل لربط السجل من الاكسل مع السجل في الــ MYSQL  و انا اقترحت عليك وجود حقل ترقيم تلقائي في مشاركة ما قبل سابقة .

أما لماذا يحصل تكرار , فلأنك قمت بتغيير الحقل الذي نربط به و هو موجود بالعبارة WHERE  في الجملة UPDATE  .

 

ياليت اخي حسام تعدل لي بما يناسب لانني لااعرف كيف اعدلة

اريد فقط انة يحدث الخلايا ولا يضيف صف جديد في قاعدة البيانات mysql

#17

كيف عمل حقل ترقيم تلقائي  ؟

تم تعديل هذه المشاركة بواسطة etheer في 16 أغسطس 2013 في 20:33

#18

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

اقتباس
كيف عمل حقل ترقيم تلقائي  ؟

 

كنت اريد ان اضع رقم 1 للسجل الأول و 2 للثاني و 3 للثالث و هكذا .... و لكن لا داعي له الآن ..

  1. قم بحذف كل البيانات في جدول m1 الموجود في MySql
  2. قم بإضافة حقل للجدول و ليكن اسم الحقل  id و هو سيكون حقل الربط .
  3. الكود بعد التعديل : 
    Sub InsertIntoMySQL()
      Dim height As Long
      Dim rowtable As Long
      Dim strSQL As String
    
    
      Dim oConn As ADODB.Connection
      Dim rs As ADODB.Recordset
    
    
      'On Error GoTo ErrHandler
      Set rs = New ADODB.Recordset
      Set oConn = New ADODB.Connection
    
    
      oConn.Open "DRIVER={MySQL ODBC 5.2 ANSI Driver};SERVER=localhost;DATABASE=etheer;USER=root;PASSWORD=1234;Option=3"
    
    
    
      'number of rows with records
      height = Worksheets("Sheet1").UsedRange.Rows.Count
      height = 4
     
    'insert data into SQL table
    Dim recordsAffected As Long
    
      With Worksheets("Sheet1")
        For rowtable = 2 To height
            
        x1 = esc(Trim(.Cells(rowtable, 1).Value))
        x2 = esc(Trim(.Cells(rowtable, 2).Value))
        x3 = esc(Trim(.Cells(rowtable, 3).Value))
            strSQL = "UPDATE M1 SET column1 = '" & x1 & "', column2 = '" & x2 & "', column3 = '" & x3 & "' WHERE id ='" & rowtable & "'"
            oConn.Execute strSQL, recordsAffected
             
             If recordsAffected = 0 Then
               strSQL = "INSERT INTO M1 (id ,column1, column2, column3) " & _
               "VALUES ('" & rowtable & "','" & x1 & "', '" & x2 & "', '" & x3 & "')"
           
             oConn.Execute strSQL, recordsAffected
             End If
        Next rowtable
      End With
      MsgBox "Insert with success " & Trim(Str(rowtable - 2)) & " records", _
        vbInformation, "Verification Data Entry"
       
    ErrHandler:
      If Err.Description <> "" And Err.Source <> "" Then
        MsgBox Err.Description, vbCritical, Err.Source
      End If
    End Sub
    
    
    'remove dangerous characters
    Function esc(txt As String)
      esc = Trim(Replace(txt, "'", "\'"))
    End Function

     ارجو ان يعمل .

تم تعديل هذه المشاركة بواسطة حسام الشامي في 16 أغسطس 2013 في 21:00

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#19

عملت اعددات قاعدة البيانات بهذا الشكل 

fSNKp.png

SIsqN.png

 

0nxFP.png

 

XmZOE.png

 

فظهر لي هذا الخطاء

#20

ايضاء عملت اعددات قاعدة البيانات بهذا الشكل

HUPvV.png

 

NFPpX.png

 

6kS0B.png

 

 

فا ظهرت لي هذة الرسالة الخطاء 

#21

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

:huh:

صديقي  .. يجب أن يكون لديك جدول واحد اسمه M1  و فيه الحقول :

id - column1 - column2 - column3

 و ليس ما قمت به .

بالنسبة للخطأ الثاني .. اجعل كل السلاسل النصية في سطر واحد .

strSQL = "INSERT INTO M1 (id ,column1, column2, column3) VALUES ('" & rowtable & "','" & x1 & "', '" & x2 & "', '" & x3 & "')"

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#22

xwAKu.png

xwAKu.png

 

 

6kS0B.png

 

 

 

قم بإضافة حقل للجدول و ليكن اسم الحقل  id و هو سيكون حقل الربط .

 

لم افهم هذة الجملة فا عملت اكثر من اعداد لقاعدة البيانات

اي واحدة تقصد من الاعدادت التي في الصور ام ليس بينها الذي تقصدة بهذة العبارة

#23

xwAKu.png

 

DUc1o.png

#24

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

الصورة التي وضعتها هي الصورة الصحيحة ..

و الكود : 

Sub InsertIntoMySQL()
  Dim height As Long
  Dim rowtable As Long
  Dim strSQL As String


  Dim oConn As ADODB.Connection
  Dim rs As ADODB.Recordset


  
  Set rs = New ADODB.Recordset
  Set oConn = New ADODB.Connection



  oConn.Open "DRIVER={MySQL ODBC 5.2 ANSI Driver};SERVER=localhost;DATABASE=etheer;USER=root;PASSWORD=1234;Option=3"

  
  height = Worksheets("Sheet1").UsedRange.Rows.Count
  height = 4
 

Dim recordsAffected As Long

  With Worksheets("Sheet1")
    For rowtable = 2 To height
        
    x1 = esc(Trim(.Cells(rowtable, 1).Value))
    x2 = esc(Trim(.Cells(rowtable, 2).Value))
    x3 = esc(Trim(.Cells(rowtable, 3).Value))
        strSQL = "UPDATE M1 SET column1 = '" & x1 & "', column2 = '" & x2 & "', column3 = '" & x3 & "' WHERE id ='" & rowtable & "'"
        oConn.Execute strSQL, recordsAffected
         
         If recordsAffected = 0 Then
           strSQL = "INSERT INTO M1 (id ,column1, column2, column3) VALUES ('" & rowtable & "','" & x1 & "', '" & x2 & "', '" & x3 & "')"
       
         oConn.Execute strSQL, recordsAffected
         End If
    Next rowtable
  End With
  MsgBox "Insert with success " & Trim(Str(rowtable - 2)) & " records", vbInformation, "Verification Data Entry"
   
ErrHandler:
  If Err.Description <> "" And Err.Source <> "" Then
    MsgBox Err.Description, vbCritical, Err.Source
  End If
End Sub


Function esc(txt As String)
  esc = Trim(Replace(txt, "'", "\'"))
End Function

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#25

مشاء الله عليك يا حسام 

الان اشتغل الكود ويحدث ولا يكرر صفوف جديدة لكن في مشكلة في الترتيب

 

8jlxs.png

 

p72f3.png

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