severinbuob
Goto Top

über VBA einen ESC Befehl simulieren

Hallo zusammen!

Wenn ich in einem Formular bin, Daten eingegeben habe und ESC drücke werden diese wider zurückgesetzt oder wenn sie noch nicht gespeichert worden sind gelöscht.
Ich möchte dies mit einem VBA simulieren. Probiert habe ich es schon mit
SendKeys "{ESC}", True  
probiert... leider ohne Erfolg, das heisst wenn ich diesen Befehl einzeln ausführe funktioniert er aber in meiner Prozedur nicht.

Meine Prozedur:

Private Sub Befehl76_Click()
On Error GoTo err_handler:
    
    'Variabeln  
    Dim sTransportNr As String
    Dim sDifferenzNr As String
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim rs2 As Object
    Dim lonSatz As Long
    Dim last As Integer
    Set db = CurrentDb
    
    'Färben der Transportnummer  
    Transportnummer.BackColor = "-2147483643"  
    
    'überprüfen ob überhaupt daten eingegeben wurden  
    If (IsNull(Transportnummer.Value)) Then Exit Sub
        
    'Holen der Transportnummer  
    sTransportNr = Transportnummer.Value

    'Abfrage ob Transportnummer schon vorhanden  
    Set rs = db.OpenRecordset("SELECT * FROM Differenzen WHERE (((Differenzen.Transportnummer)=" & sTransportNr & "));")  

    If (rs.EOF Or rs![Differenz-Nr] = Differenz_Nr.Value) Then
        Exit Sub
    Else
        'Falls Transportnummer vorhanden fragen ob der dazugehörige Datensatz angezeigt werden soll  
        If (MsgBox("Die von Ihnen eingegebene Transportnummer ist schon vorhanden!" & _  
                    vbNewLine & "Wollen sie zu diesem Datensatz wechseln?", vbInformation + vbYesNo) = vbYes) Then  
            'Datensatz anzeigen  
            SendKeys "{ESC}", True  
            
            If (Transportnummer.Value <> "") Then  
                Transportnummer.BackColor = "255"  
                Exit Sub
            End If
            
            Set rs = db.OpenRecordset("SELECT Count(Differenzen.[Differenz-Nr]) AS Anzahl FROM Differenzen;")  
            last = rs!Anzahl
            Set rs = db.OpenRecordset("SELECT * FROM Differenzen")  
            rs.MoveFirst
            For i = 1 To last
                If (IsNull(rs!Transportnummer) = False) Then
                    If (CStr(rs!Transportnummer) = sTransportNr) Then
                        lonSatz = CLng(i)
                        Exit For
                    End If
                End If
                rs.MoveNext
            Next i
            
            DoCmd.GoToRecord acDataForm, "Form Differenzen", acGoTo, lonSatz  
   
        Else
            'Soll Datensatz gelöscht werden? wenn nein wird der Werd des Transpornrfeldes gelöscht  
            If (MsgBox("Soll der Datensatz gelöscht werden?", vbQuestion + vbYesNo) = vbYes) Then  
                'Datensatz löschen  
                SendKeys "{ESC}", True  
            Else
                'Feld zurücksetzen  
                Transportnummer.Value = ""  
            End If
        End If
    End If
    
exit_handler:
    Exit Sub
    
err_handler:
    If (Err = 2105) Then
        Transportnummer.BackColor = "1420799"  
        GoTo exit_handler
    End If
    MsgBox Err.Description
    Resume exit_handler
End Sub

Danke schon im vorraus für die Unterstütung!

Gruss
Severin

Content-Key: 59512

Url: https://administrator.de/contentid/59512

Printed on: April 19, 2024 at 07:04 o'clock

Member: severinbuob
severinbuob May 22, 2007 at 08:00:59 (UTC)
Goto Top
Jetzt muss ich mich kurz korrigieren!

Es läuft jetzt plötzlich aber habe nichts am Code verändert.
Das ist mir gestern auch schon mal passiert... dann lief es und danach nicht mehr... was könnte da die ursache sein?
Member: severinbuob
severinbuob May 22, 2007 at 08:08:19 (UTC)
Goto Top
Neue Erkenntnis!

Wenn die Anwendung Access minimiere und wider öffne so funktioniert es...
Langsam krieg ich mit diesem widerspänstigen access echt die kriese!