Supportnet / Forum / Datenbanken
Laufzeitfehler 2001 - Access Office XP
Frage
Hallo,
benötige bitte dringend Hilfe.
Habe ein Formular mit 2 Kombifeldern und 1 Unterformular aufgrund 3 Tabellen erstellt (Kombi1 greift auf Tabelle Lieferanten, Kombi2 auf Kategorie zu und UF ist Geräte).
Wenn ich allerdings einen Lieferanten oder eine
Kategorie auswähle (sodass im Unterformular die dazugehörigen Geräte angezeigt werden) erscheint folgende Meldung: "Laufzeitfehler '2001' Sie haben die vorherige Operation abgebrochen.'
Das dazu erstellte Modul sieht so aus:
--------------------------------------
Option Compare Database
Public Sub daten_auswahl(ByVal combo0 As Integer, ByVal combo1 As Integer)
Dim mesql
If combo0 = 1 And combo1 = 1 Then
mesql = "SELECT * FROM Geräte"
ElseIf combo0 = 1 And combo1 <> 1 Then
mesql = "SELECT * FROM Geräte WHERE [Kategorie] =" & combo1
ElseIf combo0 <> 1 And combo1 = 1 Then
mesql = "SELECT * FROM Geräte WHERE [Lieferant] =" & combo0
Else: mesql = "SELECT * FROM Geräte WHERE [Lieferant] =" & combo0 _
& " AND [Kategorie] =" & combo1
End If
[Form_Geräte Unterformular].RecordSource = mesql
End Sub
----------------------------
Habe schon die Service Packs installiert - hat auch nichts genutzt.
Weiß irgendjemand, was ich falsch gemacht haben könnte?
Bedanke mich für jede Hilfe im Voraus.
ali70
Antwort 1 von MickK
Hallo ali70,
die meldung erscheint mir etwas merkwürdig. was mir aber aufgefallen ist, Du musst nach der Zuweisung der Recordsource
noch folgendes machen
Damit wird Deine Abfrage auch ausgeführt und das Unterformular aktualisiert.
Gruß
Mick
die meldung erscheint mir etwas merkwürdig. was mir aber aufgefallen ist, Du musst nach der Zuweisung der Recordsource
[Form_Geräte Unterformular].RecordSource = mesql
noch folgendes machen
[Form_Geräte Unterformular].Requery
Damit wird Deine Abfrage auch ausgeführt und das Unterformular aktualisiert.
Gruß
Mick
Antwort 2 von Roadrunner90
Hi ali70,
kann mich dunkel erinnern, dass ich diese Meldung unter ACC2000 auch mal hatte. Prüfe mal zuerst ob es, wenn Access geschlossen ist, eine .LDB gleichen namens gibt, wenn ja lösche diese.
Wenn nein, so war das bei mir, neue Datenbank erstellen und alle Objekte aus der defekten importieren.
Bei mir hat es geholfen, die Meldung ist nicht wieder aufgetretet.
Gruß Rudolf
kann mich dunkel erinnern, dass ich diese Meldung unter ACC2000 auch mal hatte. Prüfe mal zuerst ob es, wenn Access geschlossen ist, eine .LDB gleichen namens gibt, wenn ja lösche diese.
Wenn nein, so war das bei mir, neue Datenbank erstellen und alle Objekte aus der defekten importieren.
Bei mir hat es geholfen, die Meldung ist nicht wieder aufgetretet.
Gruß Rudolf
Antwort 3 von ali70
Hallo Mick,
Hallo Rudolf,
danke für Eure Tips - haben aber leider nicht funktioniert.
Habe eine neue Datenbank erstellt und die Tabellen aus der "alten" importiert - beim neuen Formular erscheint mir jedoch schon wieder dieselbe Fehlermeldung.
Irgendeine Idee, was ich noch machen könnte?
Danke und lg
ali70
Hallo Rudolf,
danke für Eure Tips - haben aber leider nicht funktioniert.
Habe eine neue Datenbank erstellt und die Tabellen aus der "alten" importiert - beim neuen Formular erscheint mir jedoch schon wieder dieselbe Fehlermeldung.
Irgendeine Idee, was ich noch machen könnte?
Danke und lg
ali70
Antwort 4 von MickK
Hallo ali70,
wenn Du kein Problem damit hast, kannst du mir gerne mal Deine mdb an meine o.a. Emailadresse senden und ich schau mir das mal genauer an.
Gruß
Mick
wenn Du kein Problem damit hast, kannst du mir gerne mal Deine mdb an meine o.a. Emailadresse senden und ich schau mir das mal genauer an.
Gruß
Mick
Antwort 5 von FrankieH
Warum setzt du eigentlich die Recordsource jedesmal neu? Reicht doch aus, wenn du den Filter einstellst.
Und nicht vergessen - Filteron=TRUE, ausser im ersten Fall.
Und nicht vergessen - Filteron=TRUE, ausser im ersten Fall.
Antwort 6 von FrankieH
Noch ein Nachsatz zu deinen SQL-ANweisungen:
1. Auch bei Umlauten sollte man mit eckigen Klammern kapseln. Also:
2. Und am Ende einer Anweisung sollte ein Semicolon stehen.
Vielleicht hilft das bei deinem Problem.
Sind eigentlich die Datentypen deiner WHERE-Bedingung numerisch? Sonst müsstest du nochmal einfache Anführungszeichen setzen.
Vielleicht gibtst du im Debug-Fenster mal deine SQL-Anweisung aus und kopierst die in eine neue Anfrage ein. Dann siehst du sofort, ob die in Ordung ist.
1. Auch bei Umlauten sollte man mit eckigen Klammern kapseln. Also:
SELECT * FROM [Geräte];2. Und am Ende einer Anweisung sollte ein Semicolon stehen.
Vielleicht hilft das bei deinem Problem.
Sind eigentlich die Datentypen deiner WHERE-Bedingung numerisch? Sonst müsstest du nochmal einfache Anführungszeichen setzen.
Vielleicht gibtst du im Debug-Fenster mal deine SQL-Anweisung aus und kopierst die in eine neue Anfrage ein. Dann siehst du sofort, ob die in Ordung ist.

