السلام عليكم ورحمة الله وبركاتة
كنت اعمل على قاعدة بيانات Access
تكبير قاعدة البيانات وتحويلها الى SQL SERVER مع الاستمراربالعمل على من واجهة Access
فتم التحويل بنجاح
لكن واجهتني بعض المشاكل
فمثلا لدي هذا ا الكود ومهمته عمل حلقات تكرارية
لاضافة عدة سجلات لجدول اخر غير الجدول الموجود بالنموج
يعمل عند الارتباط بقاعدة بيانات الاكسس بشكل سليم وومتاز ولكن عند الارتباط بقاعدة بيانات السكيول سيرفر
تظهر اخطاء ولا يتم تنفيذ الكود
امل المساعدة في في معرفة الخطأ بالكود
صور الخطأ
كنت اعمل على قاعدة بيانات Access
تكبير قاعدة البيانات وتحويلها الى SQL SERVER مع الاستمراربالعمل على من واجهة Access
فتم التحويل بنجاح
لكن واجهتني بعض المشاكل
فمثلا لدي هذا ا الكود ومهمته عمل حلقات تكرارية
لاضافة عدة سجلات لجدول اخر غير الجدول الموجود بالنموج
يعمل عند الارتباط بقاعدة بيانات الاكسس بشكل سليم وومتاز ولكن عند الارتباط بقاعدة بيانات السكيول سيرفر
تظهر اخطاء ولا يتم تنفيذ الكود
امل المساعدة في في معرفة الخطأ بالكود
صور الخطأ
كود :
Option Compare Database
Private Sub cmd_Do_Records_Click()
On Error GoTo err_cmd_Do_Records_Click
Dim rst As DAO.Recordset
Dim rstSUB As DAO.Recordset
Dim mysql As String
'نقرأ بيانات النموذج الفرعي
'Set rstSUB = Me.Forme_Sub_Hotel.Form.RecordsetClone
Set rstSUB = Me.Form.RecordsetClone
rstSUB.MoveLast: rstSUB.MoveFirst
RCsub = rstSUB.RecordCount
'نقرأ كل سجل من سجلات النموذج الفرعي
For j = 1 To RCsub
'اذا يوجد علامة صح في حقل "اعمل التغييرات" فقم بحذف السجلات السابقة لهذا الخط ، واعمله من جديد
If rstSUB!Do_Changes = -1 Then
'نجهز الجدول لإدخال/حذف بيانات م
mysql = "SELECT Auto_id AS Auto, Tabl_Rooms.*"
mysql = mysql & " FROM Tabl_Rooms"
mysql = mysql & " WHERE Id_Hotel=" & rstSUB!Auto_id
mysql = mysql & " AND Num_hotel=" & rstSUB!Num_hotel
mysql = mysql & " AND Numrihla=" & rstSUB!Numrihla
mysql = mysql & " ORDER by Auto_id DESC"
' Debug.Print mySQL
'Set rs = CurrentDb.OpenRecordset(mysql, dbOpenDynaset, dbSeeChanges)
Set rst = CurrentDb.OpenRecordset(mysql)
rst.MoveLast: rst.MoveFirst
RC = rst.RecordCount
If RC > rstSUB!Count_Rooms Then
'نحذف سجلات رقم من الجدول
For i = rstSUB!Count_Rooms + 1 To RC
rst.Delete
rst.MoveNext
Next i
Else
rst!Id_Hotel = rstSUB!Auto_id
rst!Numrihla = rstSUB!Numrihla
rst!Num_city = rstSUB!Num_city
rst!Num_hotel = rstSUB!Num_hotel
rst!Inserted_By = MyUser.username
rst!Insert_date = Now()
'نضيف سجلات رقم في الجدول
For i = RC + 1 To rstSUB!Count_Rooms
rst.addnew
rst!Id_Hotel = rstSUB!Auto_id
rst!Numrihla = rstSUB!Numrihla
rst!Num_city = rstSUB!Num_city
rst!Num_hotel = rstSUB!Num_hotel
rst!Inserted_By = MyUser.username
rst!Insert_date = Now()
rst![Num_Room] = i
rst.Update
Next i
End If
'نقوم بتغيير حقل "اعمل التغييرات" ونزيل الصح منها
rstSUB.Edit
rstSUB!Do_Changes = 0
rstSUB.Update
GoTo Exit_cmd_Do_Records_Click
End If 'rstSUB
rstSUB.MoveNext
Next j
Exit_cmd_Do_Records_Click:
'احذف البيانات من ذاكرة الكمبيوتر
rst.Close: Set rst = Nothing
rstSUB.Close: Set rstSUB = Nothing
Exit Sub
err_cmd_Do_Records_Click:
' If Err.Number = 3021 Then
Resume Next
' Else
MsgBox Err.Number & vbCrLf & Err.Description
' End If
'========================================================================
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE Tabl_Rooms INNER JOIN Tabl_RoomsTemp ON (Tabl_Rooms.Num_Room = Tabl_RoomsTemp.Num_Room) AND (Tabl_Rooms.Numrihla = Tabl_RoomsTemp.Numrihla) AND (Tabl_Rooms.Id_Hotel = Tabl_RoomsTemp.Id_Hotel) SET Tabl_Rooms.Num_Room_Hotel = [Tabl_RoomsTemp]![Num_Room_Hotel], Tabl_Rooms.Number_beds = [Tabl_RoomsTemp]![Number_beds], Tabl_Rooms.Molahzat = [Tabl_RoomsTemp]![Molahzat];"
'MsgBox "ok"
End Sub