PDA

Vollständige Version anzeigen : Laufzeitfehler 94


Mrfivejunior
01.11.2007, 17:13
Hallo,

ich komm nicht mehr weiter, bitte um Hilfe.

Ich hab einen Botton auf den fogender code hinterlegt ist:

Private Sub Befehl35_Click()

Dim rsInTable As New ADODB.Recordset
Dim OldGQMNr As String
Dim NewGQMNR As String
Dim LastGQMNR As String
Dim YearGQMNR As Byte
Dim ActualYear As Byte
Dim ReturnValue As String


ActualYear = Mid(CStr(Year(Now())), 3)


Set rsInTable = New ADODB.Recordset ' Recordset-Objekt instanziieren
rsInTable.ActiveConnection = CurrentProject.Connection ' Connection zuweisen
rsInTable.CursorType = adOpenDynamic ' Zugriffsmodus für DB-Cursor
rsInTable.LockType = adLockOptimistic
rsInTable.Open "SELECT Last(Stammdaten.[Stammdaten-ID]) AS [Stammdaten-ID], Last(Stammdaten.[GQM-Nr]) AS [GQM-Nr] " & _
"FROM Stammdaten " & _
"ORDER BY Last(Stammdaten.[GQM-Nr]);"
OldGQMNr = [rsInTable]![GQM-Nr]
If IsNull(OldGQMNr) Then
Me.QM_Nr = "Fehler"
Exit Sub
Else
LastGQMNR = Mid(OldGQMNr, 6)
YearGQMNR = Mid(OldGQMNr, 4, 2)

If ActualYear = YearGQMNR Then 'Neuer Datensatz ist im gleichen Jahr -> Nummer + 1
ReturnValue = "GQM" & Mid((YearGQMNR + 100), 2) & Mid((LastGQMNR + 1000 + 1), 2)
Else
ReturnValue = "GQM" & Mid((ActualYear + 100), 2) & "001"
End If

Me.QM_Nr = ReturnValue

End If


rsInTable.Close
Set rsInTable = Nothing
End Sub

Wenn ich aber nun den button betätige kommt folgenden Fehlermeldung: Laufzeitfehler 94, Unzulässige verwendung von Null

Was muss ich ändern das die Funktion wieder funtioniert??

Arne Dieckmann
01.11.2007, 17:18
Da OldGQMNr als String deklariert ist, kann der Fehler schon hier auftreten:
OldGQMNr = [rsInTable]![GQM-Nr]

Entweder du kontrollierst erst das Feld aus dem Recordset mittels IsNull() oder du deklarierst OldGQMNr als Variant.


BTW: Neben der Fehlermeldung ist auch die Zeile interessant, in der es hakt.

Mrfivejunior
01.11.2007, 17:42
der feher triet auch genau in dieser Zeile auf

OldGQMNr = [rsInTable]![GQM-Nr]

wenn ich jetzt aber nun OldGQMNr als Variant deklariere zeigt er mir im betreffenden Feld nur "Fehler" an.

was soll ich jetzt machen??:( :(

Anne Berg
01.11.2007, 18:10
Nun, was willst du denn dort stehen haben? Du hast das doch selbst so programmiert, dass falls NULL der Text "Fehler" eingefügt wird.

Die Frage ist doch, warum liefert die Abfrage keinen Datensatz oder warum ist dieses Feld nicht gefüllt? Und wie willst du in diesem Fall reagieren?

Mrfivejunior
01.11.2007, 18:23
Des mit dem "Fehler" ist schon OK.
Aber weiß ja auch nicht warum die Abfrage keine Datzensatz liefert.
Das komische ist nur das die Abfrage schon mal fuktioniert hat.
Ich hab den code nämlich aus einer Datenbank rauskopiert und in meine jetzige Datenbank einfügt. Meine jetzige Datenbank ist aber nur ein Vorgänger von der Datenbank aus der ich den code kopiert habe.(Beziehungen und Tabellen bzw Tabellennamen sind eigentlich nicht verändert worden)