Dieser Code funktioniert zum Ändern eines Textfeldes, wenn eine Variable vorhanden ist IntVer hat einen Wert drin. IntVer ist die Variable, die die Textboxversion enthält. Wenn der Benutzer den Befehl zum Hinzufügen aus einem leeren Textfeld auslöst, wird jedoch ein Typenkonfliktfehler angezeigt. Das ist tatsächlich ein SQL-Fehler, weil es die Zeichenfolge nicht übereinstimmen kann, da IntVer nicht vorhanden ist, so dass es zu einem Fehler führt, da es den Datensatz nicht finden kann.SQL, wenn das Recordset nicht mit der Fehlerbedingung übereinstimmt, Access
Wie kann ich dies verhindern? Ich dachte, das Hinzufügen der recordcount <>0
würde es tun, aber der SQL-Befehl wird vor dem Datensatz ausgeführt.
Also macht der Fehler Sinn für mich, ich weiß nur nicht, wie es zu beheben ist.
Vielen Dank für Ihre Hilfe,
Maxine
Private Sub cmdMod_Click()
Dim strSelSQL As String
strSelSQL = "SELECT EmpSWDetails.AssetID, EmpSWDetails.[" & SOFT & "] FROM EmpSWDetails " _
& "WHERE (((EmpSWDetails.AssetID)='" & Asset & "') AND ((EmpSWDetails.[" & SOFT & "])='" & IntVer & "'));"
Dim con As ADODB.Connection
Set con = Application.CurrentProject.Connection
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open strSelSQL, con, adOpenDynamic, adLockPessimistic
If rs.RecordCount <> 0 Then
rs.Fields(SOFT) = SELVER 'update version to new version
Else
rs!AssetID = Asset
rs.Fields(SOFT) = SELVER
End If
rs.Update
rs.Close
End Sub
Versuchen Sie 'NZ' mit einem Wert, der keine Datensätze zurückgibt:' & Nz (IntVer, "bogus") & '. – Parfait
Oder verwenden Sie "If Not IsNull (IntVer) Then", damit Code nicht einmal versucht, Recordset zu öffnen, wenn kein Wert für die Arbeit vorhanden ist. Sie können den Benutzer sogar mit einer Meldung bestrafen, dass er keine Daten bereitstellen konnte. – June7