2013-01-11 5 views
0

En essayant de créer un bouton pour supprimer certains enregistrements dans un sous-formulaire. Cependant, je reçois une erreur de syntaxe (opérateur manquant) dans l'expression de requête 'KEY_ID = "1'.Accéder à VBA - Identifier le texte

Je sais quel est le problème: L'attribut est du texte, donc la valeur doit être entourée de guillemets simples. Je ne sais pas comment écrire la VBA pour accomplir cela.

Private Sub cmdDelete_Click() 
If Not (Me.subKey.Form.Recordset.EOF And Me.subKey.Form.Recordset.BOF) Then 
    If MsgBox("Confirm Deletion?", vbYesNo) = vbYes Then 
     Dim strSql As String 
     strSql = "DELETE FROM KEYS" & _ 
      " WHERE KEY_ID='" & Me.subKey.Form.Recordset.Fields("KEY_ID") 
     Debug.Print strSql ' <- prints to Immediate window 
     CurrentDb.Execute strSql, dbFailOnError 

    End If 
End If 

Répondre

0
strSql = "DELETE FROM KEYS" & _ 
    " WHERE KEY_ID='" & Me.subKey.Form.Recordset.Fields("KEY_ID") & "'" 

... mais, vous l'esprit, en utilisant la citation comme un caractère ASCII est plus sûr, ou du moins plus polyvalent ou portable, quand ce genre de choses deviennent plus intensives.

strSql = "DELETE FROM KEYS" & _ 
    " WHERE KEY_ID=" & _ 
    Chr(32) & Me.subKey.Form.Recordset.Fields("KEY_ID") & Chr(32) 

Je ne suis pas sûr que c'est Chr(32) mais je pense que c'est correct.

+0

Merci beaucoup. Cela fait tellement longtemps que je suis là-dedans. – Batman

+0

Le placement de guillemets et '&' n'a pas beaucoup de sens pour moi:/ – Batman

+1

Votre SQL est complète, comme vous l'avez dit, à l'exception de la citation de fermeture. '&" '"' prend soin de cela. Etape de dépannage: Exécutez ce code sans la variable 'Me.subKey'. Juste le faire fonctionner, puis ajouter les complications. Cela devrait avoir du sens au moment où vous avez terminé. – Smandoli

Questions connexes