none
Fehler bei FindFirst => Keine zulässige Testmarke

    Frage

  • Hallo Leute,

    seit kurzem erhalte ich bei einem seit Jahren laufenden Code die Fehlermeldung: Keine zulässige Textmarke. Der Fehler tritt an folgender Stelle auf:

    Set rstESt = dbs.OpenRecordset("ÜBogen_ESt", dbOpenDynaset)
    ' Ersten übereinstimmenden Datensatz suchen.
    
        rstESt.FindFirst strKriterien
    

    Die gesamte Funktion sieht wie folgt aus:

    Public Sub Aufbau_Überwachungsbogen(ByVal varÜNr As Long, ByVal varJahr As Long, Optional blnHinweismeldung As Boolean = True)
    
    Dim dbs As Database, rstUSt As Recordset, rstUst_VJ As Recordset, rstESt As Recordset, rstLSt As Recordset, rstLSt_VJ As Recordset
    Dim strKriterien As String, strKriterien_VJ As String
    Dim varFrage As Integer
    
    
    'varÜNr = Forms![Aufruf Überwachungsbogen].ÜNr
    'varJahr = Forms![Aufruf Überwachungsbogen].Jahr
    
    Anfang:
    
    ' Verweis auf aktuelle Datenbank holen.
    Set dbs = CurrentDb
    ' Suchkriterien definieren.
    strKriterien = "[ÜBogenNr] = " & varÜNr & " And [Jahr] = " & varJahr
    strKriterien_VJ = "[ÜBogenNr] = " & varÜNr & " And [Jahr] = " & (varJahr - 1)
    ' Recordset-Objekt vom Typ Dynaset erstellen, das auf der Tabelle
    ' "Bestellungen" basiert.
    Set rstUSt = dbs.OpenRecordset("ÜBogen_USt", dbOpenDynaset)
    Set rstUst_VJ = dbs.OpenRecordset("ÜBogen_USt", dbOpenDynaset)
    ' Ersten übereinstimmenden Datensatz suchen.
    
        rstUSt.FindFirst strKriterien
        rstUst_VJ.FindFirst strKriterien_VJ
        ' Prüfen, ob der Datensatz gefunden wurde.
        If rstUSt.NoMatch Then
            rstUSt.AddNew
            rstUSt!ÜBogenNr = varÜNr
            rstUSt!Jahr = varJahr
            
            If rstUst_VJ.NoMatch = False Then
                rstUSt!Überschrift1 = rstUst_VJ!Überschrift1
                rstUSt!Überschrift2 = rstUst_VJ!Überschrift2
                rstUSt!Überschrift3 = rstUst_VJ!Überschrift3
                rstUSt!Überschrift4 = rstUst_VJ!Überschrift4
                rstUSt!Überschrift5 = rstUst_VJ!Überschrift5
                rstUSt!Dauerfristverlängerung = rstUst_VJ!Dauerfristverlängerung
                rstUSt!Intervall = rstUst_VJ!Intervall
                rstUSt!Istversteuerung = rstUst_VJ!Istversteuerung
                rstUSt!ZM_Intervall = rstUst_VJ!ZM_Intervall
                rstUSt!Spalten = rstUst_VJ!Spalten
            End If
            rstUSt.Update
        
        End If
            
    Set rstESt = dbs.OpenRecordset("ÜBogen_ESt", dbOpenDynaset)
    ' Ersten übereinstimmenden Datensatz suchen.
    
        rstESt.FindFirst strKriterien
        ' Prüfen, ob der Datensatz gefunden wurde.
        If rstESt.NoMatch Then
            rstESt.AddNew
            rstESt!ÜBogenNr = varÜNr
            rstESt!Jahr = varJahr
            rstESt.Update
            If blnHinweismeldung = True Then MsgBox "Achtung: Die Vorauszahlungen für ESt./KSt. und GewSt. sind manuell nachzutragen !!", vbCritical
        End If
            
    Set rstLSt = dbs.OpenRecordset("ÜBogen_LSt", dbOpenDynaset)
    Set rstLSt_VJ = dbs.OpenRecordset("ÜBogen_LSt", dbOpenDynaset)
    
    ' Ersten übereinstimmenden Datensatz suchen.
    
        rstLSt.FindFirst strKriterien
        rstLSt_VJ.FindFirst strKriterien_VJ
    
        ' Prüfen, ob der Datensatz gefunden wurde.
        If rstLSt.NoMatch Then
            rstLSt.AddNew
            rstLSt!ÜBogenNr = varÜNr
            rstLSt!Jahr = varJahr
            
            If rstLSt_VJ.NoMatch = False Then
                rstLSt!Intervall = rstLSt_VJ!Intervall
            End If
            
            rstLSt.Update
        End If
      
            
        rstUSt.Close
        rstUst_VJ.Close
        rstESt.Close
        rstLSt.Close
        rstLSt_VJ.Close
        
        dbs.Close
    
        Set dbs = Nothing
        Set rstUSt = Nothing
        Set rstUst_VJ = Nothing
        Set rstESt = Nothing
        Set rstLSt = Nothing
        
    End Sub

    Alle anderen FindFirst funktionieren einwandfrei.

    Was kann denn da passiert sein?
    Die Tabelle ist definitiv erreichbar.

    Ich bin da echt ratlos.

    Ich bin für jede Hilfe dankbar.

    Gruß Ahmed

    Montag, 14. Dezember 2015 09:15

Antworten

  • Hallo Ahmed,

    zunächst solltest Du die Datenbank mal reparieren. Der Fehler könnte auf einen defekten  Primärschlüssel / Index hinweisen.

    Gruß Elmar

    • Als Antwort markiert Ahmed Martens Montag, 14. Dezember 2015 09:48
    Montag, 14. Dezember 2015 09:38

Alle Antworten

  • Hallo Ahmed,

    zunächst solltest Du die Datenbank mal reparieren. Der Fehler könnte auf einen defekten  Primärschlüssel / Index hinweisen.

    Gruß Elmar

    • Als Antwort markiert Ahmed Martens Montag, 14. Dezember 2015 09:48
    Montag, 14. Dezember 2015 09:38
  • Das war es. Eine Datenbankreparatur hatte ich schon erfolglos versucht.

    Aber folgender Lösungsweg hat funktioniert:

    Ich habe jetzt einfach einmal die Primärschlüssel gelöscht und dann gespeichert.

    Danach die Tabelle geöffnet und die Primärschlüssel wieder neu gesetzt, gespeichert und siehe da, es funktionierte wieder.

    Vielen Dank für die Hilfe.

    Gruß Ahmed

    Montag, 14. Dezember 2015 09:48