2013-10-15 4 views
1

Je suis nouveau sur ce site et nouveau pour le code vba. Un autre utilisateur a posté cette question et le code de réponse semblait être le code que je cherchais. Je veux vérifier plusieurs champs pour les données en double, signaler un message et aller à l'enregistrement. J'espérais que ce code ferait cela. Sauf quand j'ajoute mes propres champs à vérifier, je reçois le code d'erreur 3077 - erreur de syntaxe et je ne suis pas sûr de savoir comment le réparer. Toute aide serait appréciée. La ligne la plus élevée pour cette erreur est la 3ème ligne. J'utilise l'accès 2010. Je ne suis pas sûr de savoir comment lier la question, mais on m'a conseillé de poser une nouvelle question concernant mon problème.vérifier un enregistrement pour les enregistrements en double, avant de créer de nouveaux enregistrements

Private Sub Form_BeforeUpdate(Cancel As Integer) 
    Dim rst As Recordset 
    Set rst = Me.RecordsetClone 
    rst.FindFirst "[ID] <> " & Me.ID & " AND [TitleText] = " & Me.TitleText & " AND [UnitCode] = " & Me.UnitCode & " AND [AcademicYear] = " & Me.AcademicYear & " AND [Titleofchapterjournalarticle] = " & Me.Titleofchapterjournalarticle 
    If Not rst.NoMatch Then 
     Cancel = True 
     If MsgBox("A record matching these fields already exist", vbYesNo) = vbYes Then 
      Me.Undo 
      DoCmd.SearchForRecord , , acFirst, "[ID] = " & rst("ID") 
     End If 
    End If 
    rst.Close 
End Sub 
+0

@mehow Quel est le secret derrière l'ajout de tag 'excel-vba' dans toutes les questions? – Santosh

Répondre

2

Je pense que vous voulez dire que la quatrième ligne est en baisse celui mis en évidence, rst.FindFirst....

Si tel est le cas, il existe une erreur de syntaxe dans votre chaîne FindFirst. Il se peut que vos champs TitleText ou Titleofchapterjournalarticle contenaient des espaces ou du code logique (OR, AND). Pour éviter cela, entourez les champs de type chaîne avec '(guillemets simples) à l'intérieur de la chaîne.

Le résultat final ressemblera:

rst.FindFirst "[ID] <> " & Me.ID & _ 
" AND [TitleText] = '" & Me.TitleText & _ 
"' AND [UnitCode] = " & Me.UnitCode & _ 
" AND [AcademicYear] = " & Me.AcademicYear & _ 
" AND [Titleofchapterjournalarticle] = '" & Me.Titleofchapterjournalarticle & "'" 
+0

merci, c'est génial. Cela a fonctionné, j'ai juste besoin de mal tourner le DoCmd, pour l'amener à l'enregistrement spécifique. À votre santé! – Janeyg

+0

@Janeyg 'DoCmd.SearchForRecord acDataForm, Me.Name, acFirst," ID = "& rst. (" ID ")' travaillé pour moi sur mon formulaire de test. – usncahill

+0

Merci! Aide beaucoup apprécié. – Janeyg

Questions connexes