2017-05-15 5 views
0

Ich habe eine öffentliche Funktion in meinem Hauptformular, die einen neuen Datensatz in meinem Unterformular (auf meinem Hauptformular) erstellt. Ich versuche, die öffentliche Funktion mit einem Ja/Nein-Meldungsfeld aufzurufen. (Dh: Möchten Sie den Datensatz aktualisieren? Ja - Erstellt einen neuen Datensatz im Unterformular. Nein - Erstellt keinen neuen Datensatz).VBA-Fehler beim Aufruf der öffentlichen Funktion in ElseIf-Anweisung

Ich bin in der Lage, die öffentliche Funktion außerhalb der Y/N-Message-Box aufzurufen. Sobald ich jedoch den Code in die ElseIf-Anweisung einfüge, erhalte ich die Meldung "Sie können nicht zum angegebenen Datensatz wechseln". Fehler im "DoCmd.GoToRecord,, acNewRec" Teil meiner öffentlichen Funktion.

Public Function NewEventEntry() 
    'this public function creates an empty new record in the subform 
    Me![subform_Events].SetFocus 
    DoCmd.GoToRecord , , acNewRec 
End Function 


Private Sub RunUpdateQuery_Click() 
    'calling the public function works fine here  
    'Call NewEventEntry 

If DCount("*", "qry_CheckAllBadAddress") = 0 Then 
MsgBox "All addresses are marked bad.", vbExclamation 

ElseIf MsgBox("Do you want to update the addres?", vbYesNo + vbQuestion, "Warning") = vbYes Then 

    'calling the public function here doesn't work; i receive an error saying: "You can't go to the specified record." the problem is in the public  function, specifically the DoCmd.GoToRecord , , acNewRec line 
    Call NewEventEntry 

End If 
End Sub 

Antwort

0
Me![subform_Events].SetFocus 
DoCmd.GoToRecord , , acNewRec 

Wie soll VBA wissen, dass Sie in dem Unterformular zu einem neuen Datensatz gehen wollen, nicht in der Hauptform? ;-)

Try this:

DoCmd.GoToRecord , "subform_Events", acNewRec 

Ich bin nicht sicher, ob diese (lange Zeit, da ich subforms verwendet) arbeitet. Wenn nicht, würde ich versuchen, etwas mit DAO.recordset zu tun.

+0

Ich habe es versucht, und wenn diese Zeile eingegeben wird, ist es auf der Suche nach dem Teilformular, um tatsächlich offen zu sein (für sich selbst, anstatt "offen" auf sein das Hauptformular). Der 'setfocus' Teil ist so, dass das Hauptformular einen neuen Datensatz im Unterformular (auf dem Hauptformular) erstellen kann. Die Codezeile funktioniert nur, wenn sie in der ElseIf-Anweisung enthalten ist. – xpandamonium

Verwandte Themen