Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Laufzeitfehler 3464 - Konflikt im Kriterienausdruc

Forumthread: Laufzeitfehler 3464 - Konflikt im Kriterienausdruc

Laufzeitfehler 3464 - Konflikt im Kriterienausdruc
22.08.2019 15:53:29
Matthias
Hallo Leute,
leider verstehe ich nicht, warum mir ständig der Laufzeitfehler 3464 angezeigt wird.
Fehler wird in der letzten Zeile angezeigt. Job ist eine String Variable.
Also Beispiel 04046542.
Set rs2 = AktivDatenbank.OpenRecordset("tbl_aktiv_Z4SM15_N_Terminabstimmung")
strSQL = "Select * From tbl_aktiv_Z4SM15_N_Terminabstimmung Where Auftrag = "
strSQL = strSQL + "'"
strSQL = strSQL + job
strSQL = strSQL + "'"
strSQL = strSQL + ";"
Set rs2 = AktivDatenbank.OpenRecordset(strSQL)
Vielen Dank schonmal
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 3464 - Konflikt im Kriterienausdruc
22.08.2019 20:11:42
Luschi
Hallo Matthias,
Strings werden in Vba per & und nicht mit + verkettet; also:
strSQL = strSQL & "'" …
Gruß von Luschi
aus klein-Paris
Das stimmt nicht ganz, ...
24.08.2019 14:47:15
Luc:-?
…Luschi;
so eindeutig sind diese Operatoren nur in Xl. Der FmlText-Interpreter führt dann ggf auch eine TypUmwandlung aus. In VBA passiert letzteres nur bedingt zwischen generell numerisch interpretier­baren Daten. Strings jedweder Form gehören aber nicht dazu. Deshalb kann + auch als Verkettungsoperator benutzt wdn: "123"+"456"⇒"123456" — dagegen 123+456⇒579
Interessant wird's dann bei Variant-Variablen. Je nach ihrem Inhalt kann es dann zu unterschiedlichen Ergebnissen kommen, beide eine echte Zahl (oder Boolean) → Addition, sonst Verkettung (falls kein FehlerWert).
Gruß, Luc :-?
„Der beste Beweis für intelligentes Leben im Universum ist, dass noch niemand versucht hat, Kontakt mit uns aufzunehmen.“ H.Lesch, 2018, Sonneberg
Deshalb Intelligenz steigern mit …

Anzeige
Fehlerr 3464 ist nicht XL sondern ACCESS
24.08.2019 15:19:15
EtoPHG
Hallo Matthias,
Der Fehler ist vom SQL Zugriff auf die DB verursacht und sagt aus, dass in der WHERE-Klausel etwas nicht stimmt. Ich vermute, dass das Feld Auftrag dort nicht als Text definiert ist, sondern als Zahl, darum müsste der Parameter ohne Hochkommas und führenden Nullen im SQL Befehl stehen!
Gruess Hansueli
Anzeige
;
Anzeige

Infobox / Tutorial

Laufzeitfehler 3464 in Excel VBA beheben


Schritt-für-Schritt-Anleitung

  1. Fehlerursache identifizieren: Der Laufzeitfehler 3464 in Excel VBA tritt häufig auf, wenn der SQL-Befehl ein falsches Datenformat verwendet. Überprüfe, ob das Feld Auftrag in der Datenbank als Text oder Zahl definiert ist.

  2. SQL-String korrekt formatieren: Wenn Auftrag als Zahl definiert ist, entferne die Hochkommas in deinem SQL-Befehl. Der korrekte SQL-Befehl könnte folgendermaßen aussehen:

    strSQL = "Select * From tbl_aktiv_Z4SM15_N_Terminabstimmung Where Auftrag = " & job & ";"
  3. Strings richtig verketten: Stelle sicher, dass du Strings in VBA mit & verkettetest. Beispiel:

    strSQL = strSQL & "'" & job & "';"
  4. Datentypen prüfen: Achte darauf, dass der Datentyp der Variable job mit dem Datentyp des Feldes Auftrag in der Datenbank übereinstimmt.


Häufige Fehler und Lösungen

  • Fehler 3464: Dieser Fehler tritt häufig auf, wenn das SQL-Kriterium nicht zur Datenbankstruktur passt. Überprüfe die Definition der Felder in der Tabelle.

  • Falsche Verkettung: Viele Benutzer verwenden + anstelle von & zur Verkettung von Strings. Dies kann zu unerwarteten Ergebnissen führen.

  • Numerische Werte: Wenn Auftrag als Zahl definiert ist, müssen führende Nullen entfernt werden und keine Hochkommas verwendet werden.


Alternative Methoden

  • Debugging: Verwende die Funktion Debug.Print in VBA, um den generierten SQL-Befehl zu überprüfen. Dies hilft, Fehler bei der Erstellung des Strings zu identifizieren.

    Debug.Print strSQL
  • SQL-Abfragen in Access: Wenn du mit Microsoft Access arbeitest, kannst du die Abfrage direkt im Abfrage-Editor testen, um sicherzustellen, dass sie korrekt ist.


Praktische Beispiele

  1. Beispiel für einen funktionierenden SQL-Befehl:

    Dim job As String
    job = "04046542"
    Dim strSQL As String
    strSQL = "Select * From tbl_aktiv_Z4SM15_N_Terminabstimmung Where Auftrag = '" & job & "';"
    Set rs2 = AktivDatenbank.OpenRecordset(strSQL)
  2. Beispiel für einen SQL-Befehl ohne Hochkommas (wenn Auftrag eine Zahl ist):

    Dim job As Long
    job = 4046542
    Dim strSQL As String
    strSQL = "Select * From tbl_aktiv_Z4SM15_N_Terminabstimmung Where Auftrag = " & job & ";"
    Set rs2 = AktivDatenbank.OpenRecordset(strSQL)

Tipps für Profis

  • Verwende Option Explicit: Setze am Anfang deines VBA-Moduls Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Tippfehler zu vermeiden.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung in deinem Code, um Laufzeitfehler abzufangen und zu protokollieren.

    On Error GoTo ErrorHandler
    ' Dein Code hier
    Exit Sub
    ErrorHandler:
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
  • Dokumentation: Dokumentiere deinen Code gut, um anderen (und deinem zukünftigen Ich) zu helfen, den Code schnell zu verstehen.


FAQ: Häufige Fragen

1. Was ist der Laufzeitfehler 3464?
Der Laufzeitfehler 3464 tritt auf, wenn in einer SQL-Abfrage ein Typkonflikt besteht, meist aufgrund von falschen Datenformaten in der WHERE-Klausel.

2. Wie kann ich sicherstellen, dass mein SQL-Befehl korrekt ist?
Überprüfe die Datentypen der verwendeten Felder in der Datenbank und teste den SQL-Befehl direkt in Access oder einem SQL-Editor.

3. Warum sollte ich Option Explicit verwenden?
Option Explicit zwingt dich, alle Variablen zu deklarieren, was hilft, Fehler durch nicht deklarierte oder falsch geschriebene Variablen zu vermeiden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige