اذهب الي المحتوي
أوفيسنا

تحويل استعلام غير المتطابقات الى استعلام حذف


kaser906

الردود الموصى بها

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

بالمرفق يوجد استعلام للبحث عن غير المتطابقات بالجدولين Tabl_Itinerary   و   Tabl_Itinerarytemp

المطلوب :

1- تحويل الاستعلام الى استعلام حذف بحيث يحذف السجلات غير المتطابقة من الجدول  Tabl_Itinerary

2 - عمل كود يمكنني من تنفيذ نفس اجراء الاستعلام من النموذج بدون الحاجة الى الاستعلام

Qdel.rar

رابط هذا التعليق
شارك

وعليكم السلام:smile:

 

يجب على كل جدول ان يحتوي على حقل ترقيم تلقائي ، فهذا مهم جدا للبرنامج ، وسرعته:smile:

 

وقد عملت لك هذا الحقل في الجدول Tabl_Itinerary ،

واختصرت استعلام عدم المطابقات ، واسميته qry_Diff_tbl_Itinerary_tbl_Itinerarytemp ،

كود زري الحذف:

Option Compare Database
Option Explicit

Private Sub cmd_Delete_With_Code_Click()

    Dim rstQry As DAO.Recordset
    Dim rstTbl As DAO.Recordset
    Dim RCqry As Integer
    Dim i As Integer
    Dim mySQL As String
    
    Set rstTbl = CurrentDb.OpenRecordset("Select * From Tabl_Itinerary")
    
    mySQL = "SELECT Tabl_Itinerary.Auto_ID, Tabl_Itinerarytemp.Num_Itinerary"
    mySQL = mySQL & " FROM Tabl_Itinerary LEFT JOIN Tabl_Itinerarytemp ON Tabl_Itinerary.[Num_Itinerary] = Tabl_Itinerarytemp.[Num_Itinerary]"
    mySQL = mySQL & " WHERE (((Tabl_Itinerarytemp.Num_Itinerary) Is Null));"
        
    Set rstQry = CurrentDb.OpenRecordset(mySQL)
    rstQry.MoveLast: rstQry.MoveFirst
    RCqry = rstQry.RecordCount
    
    For i = 1 To RCqry
    
        rstTbl.FindFirst "[Auto_ID]=" & rstQry!Auto_ID
        rstTbl.Delete
        
        rstQry.MoveNext
    Next i
    
    rstQry.Close: Set rstQry = Nothing
    rstTbl.Close: Set rstTbl = Nothing
    
    MsgBox "Done"
    
End Sub

Private Sub cmd_Delete_With_Query_Click()

    Dim rstQry As DAO.Recordset
    Dim rstTbl As DAO.Recordset
    Dim RCqry As Integer
    Dim i As Integer
    
    Set rstTbl = CurrentDb.OpenRecordset("Select * From Tabl_Itinerary")
    
    Set rstQry = CurrentDb.OpenRecordset("Select * From qry_Diff_tbl_Itinerary_tbl_Itinerarytemp")
    rstQry.MoveLast: rstQry.MoveFirst
    RCqry = rstQry.RecordCount
    
    For i = 1 To RCqry
    
        rstTbl.FindFirst "[Auto_ID]=" & rstQry!Auto_ID
        rstTbl.Delete
        
        rstQry.MoveNext
    Next i
    
    rstQry.Close: Set rstQry = Nothing
    rstTbl.Close: Set rstTbl = Nothing
    
    MsgBox "Done"
    
End Sub

 

جعفر

795.Qdel.accdb.zip

  • Like 1
رابط هذا التعليق
شارك

6 ساعات مضت, jjafferr said:

وعليكم السلام:smile:

 

يجب على كل جدول ان يحتوي على حقل ترقيم تلقائي ، فهذا مهم جدا للبرنامج ، وسرعته:smile:

 

وقد عملت لك هذا الحقل في الجدول Tabl_Itinerary ،

واختصرت استعلام عدم المطابقات ، واسميته qry_Diff_tbl_Itinerary_tbl_Itinerarytemp ،

كود زري الحذف:


Option Compare Database
Option Explicit

Private Sub cmd_Delete_With_Code_Click()

    Dim rstQry As DAO.Recordset
    Dim rstTbl As DAO.Recordset
    Dim RCqry As Integer
    Dim i As Integer
    Dim mySQL As String
    
    Set rstTbl = CurrentDb.OpenRecordset("Select * From Tabl_Itinerary")
    
    mySQL = "SELECT Tabl_Itinerary.Auto_ID, Tabl_Itinerarytemp.Num_Itinerary"
    mySQL = mySQL & " FROM Tabl_Itinerary LEFT JOIN Tabl_Itinerarytemp ON Tabl_Itinerary.[Num_Itinerary] = Tabl_Itinerarytemp.[Num_Itinerary]"
    mySQL = mySQL & " WHERE (((Tabl_Itinerarytemp.Num_Itinerary) Is Null));"
        
    Set rstQry = CurrentDb.OpenRecordset(mySQL)
    rstQry.MoveLast: rstQry.MoveFirst
    RCqry = rstQry.RecordCount
    
    For i = 1 To RCqry
    
        rstTbl.FindFirst "[Auto_ID]=" & rstQry!Auto_ID
        rstTbl.Delete
        
        rstQry.MoveNext
    Next i
    
    rstQry.Close: Set rstQry = Nothing
    rstTbl.Close: Set rstTbl = Nothing
    
    MsgBox "Done"
    
End Sub

Private Sub cmd_Delete_With_Query_Click()

    Dim rstQry As DAO.Recordset
    Dim rstTbl As DAO.Recordset
    Dim RCqry As Integer
    Dim i As Integer
    
    Set rstTbl = CurrentDb.OpenRecordset("Select * From Tabl_Itinerary")
    
    Set rstQry = CurrentDb.OpenRecordset("Select * From qry_Diff_tbl_Itinerary_tbl_Itinerarytemp")
    rstQry.MoveLast: rstQry.MoveFirst
    RCqry = rstQry.RecordCount
    
    For i = 1 To RCqry
    
        rstTbl.FindFirst "[Auto_ID]=" & rstQry!Auto_ID
        rstTbl.Delete
        
        rstQry.MoveNext
    Next i
    
    rstQry.Close: Set rstQry = Nothing
    rstTbl.Close: Set rstTbl = Nothing
    
    MsgBox "Done"
    
End Sub

 

جعفر

795.Qdel.accdb.zip

هذا هو المطلوب بالضبط

لكن ظهرت لدي مشكلة حيث تعارض الكود الذي وضعته

مع كود أخر بالنموذج

انظر الصورة 

هذه الصورة للكود الأخر الذي اصبح يظهر مشكلة بعد إضافة الكود الذي عملته لي

151318466789961.png

رابط هذا التعليق
شارك

151319460698591.png

وضعت الكود في زر امر sav

لن يعمل الكود لعدم وجود بعض الكائنات وضعته لتنظر اليه

 

 

 

795.Qdell.rar

2 ساعات مضت, jjafferr said:

شو رسالة الخطأ؟

 

رابط هذا التعليق
شارك

انا وضعت هذا الشرط في ثاني سطر من الكود:

Option Explicit

 

ومعناه ، لا تسمح بإستعمال أي متغير ، قبل ان تعمل له Dim ،

لكن ، ومثل ما العمانيين يقولون: الباب اللي يجيك منه ريح ، سده واستريح ،

فإحذف هذا السطر:smile:

 

جعفر

  • Like 1
رابط هذا التعليق
شارك

17 دقائق مضت, jjafferr said:

انا وضعت هذا الشرط في ثاني سطر من الكود:


Option Explicit

 

ومعناه ، لا تسمح بإستعمال أي متغير ، قبل ان تعمل له Dim ،

لكن ، ومثل ما العمانيين يقولون: الباب اللي يجيك منه ريح ، سده واستريح ،

فإحذف هذا السطر:smile:

 

جعفر

تمام

الله يعطيك العافية

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information