2016-10-14 2 views
0

In MS Access 2013 habe ich ein Formular mit mehreren Unterformularen. Auf einem der Unterformulare befindet sich ein RichText-Textfeld mit mehreren Zeilen. Der Benutzer kann auf eine Schaltfläche klicken, um die Rechtschreibprüfung für das Textfeld vorzunehmen, und das Textfeld wird automatisch auch automatisch geprüft, wenn auf die Schaltfläche [Speichern] im Unterformular geklickt wird.Das Abbrechen des MS Access-Rechtschreibprüfungsdialogs mit der {ESC} -Taste führt zu einem Unterformular-Aktualisierungsfehler #NAME

Die Rechtschreibprüfung funktioniert einwandfrei. Wenn der Benutzer jedoch {ESCAPE} drückt, während das Rechtschreibdialogfeld angezeigt wird, um das Dialogfeld zu schließen, werden die Daten in einem anderen Teilformular nicht ordnungsgemäß aktualisiert und #NAME für alle Felder angezeigt.

Wenn der Benutzer jedoch auf die Schaltfläche [Abbrechen] klickt oder auf das [X] oben rechts im Dialogfeld klickt, um das Rechtschreibfenster zu schließen, wird das Unterformular ordnungsgemäß aktualisiert.

Wenn ich direkt nach dem Befehl, der den Rechtschreibdialog aufruft und dann den Code Zeile für Zeile durchläuft, einen Haltepunkt einfüge, wird das Teilformular auch dann gut aktualisiert, wenn die Taste {ESC} gedrückt wird.

Ich habe versucht, die Rechtschreibprüfung auf das Ereignis AfterUpdate des Formulars anstelle des OnClick-Ereignisses der Schaltfläche [Speichern] zu verschieben, aber das hat das Problem nicht geändert.

Kennt jemand eine anmutige Methode, die Verwendung von {ESC} zu verhindern, um das Rechtschreibprüfungsdialogfeld daran zu hindern, die Aktualisierung anderer Unterformulare zu verhindern?

Ich habe eine Antwort geschrieben für den Fall, dass es jemand hilft, aber, ich würde es lieben, jemand schlug/schlug eine elegantere Lösung, weil ich meine Workaround nicht besonders mag. Ich werde eine Weile warten, bevor ich meine Antwort als akzeptiert markieren kann, damit andere eine bessere Post schreiben können!

Antwort

0

Also, die schlampig Abhilfe, die für mich gearbeitet wurde eine SendKeys "{RIGHT}", True nach der Rechtschreibprüfung Befehl hinzufügen wie folgt:

'spell check the progress note 
If Me.[Note].Tag = "Locked" Then 
    MsgBox "Cannot spell check a locked note.", vbOKOnly + vbInformation, "Locked" 
Else 
    'If the Note contains data run the Spell Checker after data is entered. 
    If Len(Me.[Note] & "") > 0 Then 
     DoCmd.SetWarnings False 
     Me.[Note].SetFocus 'set focus to the control to spell check 
     With Me.[Note] 
      .SelStart = 0 
      .SelLength = Len(Me.[Note]) 
      DoCmd.RunCommand acCmdSpelling 
      SendKeys "{RIGHT}", True 
      .SelLength = 0 
     End With 
     DoCmd.SetWarnings True 
    End If 
End If 

Ich denke, das schlampig ist und sollte nicht notwendig sein, und ich habe keine Ahnung, warum sie löst das Problem. Also, Ich würde es lieben, wenn jemand anderes eine elegantere Lösung bietet!

+0

Nach einer Woche gab es keine anderen Vorschläge, also, ich markiere es als die Antwort. Hoffe, die obige Antwort hilft jemandem aus. Wenn jemand andere Ideen hat, bitte zögern Sie nicht zu posten! – DRC

Verwandte Themen