tarafından yürütüldüğünde hiçbir şeyi silmiyor Kullanıcının iptal etmesi durumunda yeni oluşturulmuş bir kaydı silmek için kodumu almaya çalışıyorum. Bazı nedenlerden dolayı sorgu, tablo içinde bulunan benzersiz kimlikler için filtreleniyor olsa da kaydı silmez. Erişim herhangi bir hata atmıyor.CurrentDb.Execute silme sorgusu, VBA
PG_ID, her iki tabloda da benzersiz tanımlayıcıdır, Uzun Tamsayıdır.
Aşağıda, kodumun bir örnek bölümünü ekledim. Lütfen yardım et!
Dim var_PGID As String
Dim Delete_PG_Data, Delete_PG_Upld As String
Dim db As Database
Set db = CurrentDb
var_PGID = TempVars![var_PG_ID_NEW]
Delete_PG_Data = "DELETE * " & _
"FROM tbl_CapEx_Projects_Group " & _
"WHERE PG_ID=" & var_PGID
Delete_PG_Upld = "DELETE * " & _
"FROM tbl_CapEx_Projects_Group_Attachements " & _
"WHERE PG_ID=" & var_PGID
Debug.Print Delete_PG_Data
Debug.Print Delete_PG_Upld
db.Execute Delete_PG_Data, dbFailOnError
db.Execute Delete_PG_Upld, dbFailOnError
İstendiği gibi msgbox'ı Debug.Print konumuna değiştirdim. Aşağıda, bir erişim sorgusuna yerleştirildiğinde doğru şekilde çalışan debug.print çıktısı verilmiştir.
Zamanlama meselesiydi. İşlemi gerçekleştirip sonra silme sorgusunu çalıştırdım. Girişiniz için hepinize teşekkürler!
Private Sub cmd_Cancel_Click()
On Error Resume Next
DoCmd.SetWarnings False
If TempVars![var_NewRecord] = True Then
Do While Not Me.Recordset.EOF
Me.Recordset.Update
Me.Recordset.MoveNext
Loop
DBEngine.CommitTrans
Me.Recordset.Close
Dim var_PGID As String
Dim Delete_PG_Data, Delete_PG_Upld As String
Dim db As Database
Set db = CurrentDb
var_PGID = TempVars![var_PG_ID_NEW]
Delete_PG_Data = "DELETE * " & _
"FROM tbl_CapEx_Projects_Group " & _
"WHERE PG_ID=" & var_PGID
Delete_PG_Upld = "DELETE * " & _
"FROM tbl_CapEx_Projects_Group_Attachements " & _
"WHERE PG_ID=" & var_PGID
Debug.Print Delete_PG_Data
Debug.Print Delete_PG_Upld
db.Execute Delete_PG_Data, dbFailOnError
db.Execute Delete_PG_Upld, dbFailOnError
''Me.Recordset.Delete
''DBEngine.BeginTrans
''DBEngine.CommitTrans
Else
If Me.Saved Then
DBEngine.Rollback
Else
If Me.Dirtied Then DBEngine.Rollback
End If
End If
DoCmd.Close ObjectType:=acForm, ObjectName:=Me.Name
Form_frm_CapEx_Edit_Project_Groups_Cont.Requery
DoCmd.SetWarnings True
End Sub
Hmm, PG_ID gerçekten uzun bir int ise çalışması gerekir gibi görünüyor. Lütfen 'Debug.Print' tarafından' MsgBox' yerine değiştirin ve Sorbunuz penceresinden çıktıyı sorgunuza ekleyin (Ctrl + G sizi oraya götürür). - Ayrıca bkz: [VBA'da dinamik SQL hata ayıklama] (http://stackoverflow.com/a/1099570/3820271) – Andre
Erişim bir hata verebilir, ancak siz eklemediniz çünkü onu eklemediniz dbFailOnError' parametresi db.Execute. Oluşturucuyu sorgulamak ve orada yürütmek için Delete_PG_Data ve Delete_PG_Upld değişkenlerinin değerini kopyalamaya çalışın. –
TempVars! [Var_PG_ID_NEW] değişkeninin doğru değeri içerdiğinden emin misiniz? –