2009-03-26 4 views
0

Ich habe eine Tabelle (Lesungen) bereits durch ODBC in Access verbunden, die sehr schnell öffnet, wenn ich darauf klicke.Führen Sie Abfrage gegen ODBC angeschlossen Tabelle VBA

Allerdings, wenn ich versuchen, dies in VBA ich laufen sperrt es und nie etwas zeigt:

Dim strSql As String 
strSql = "SELECT readings.ids " & _ 
     "INTO ids_temp " & _ 
     "FROM readings " & _ 
     "WHERE readings.ids > 1234;" //This is id in middle of list 
DoCmd.SetWarnings False 
DoCmd.RunSQL strSql 
DoCmd.SetWarnings True 

Aus irgendeinem Grund das das gesamte System abstürzt. Irgendwelche Ideen?

+0

Wird die Abfrage normal aus dem Abfragefenster ausgeführt? – Fionnuala

+0

ok gut es war ein Fehler meinerseits. Die Datenbank wurde nicht so sortiert, wie ich dachte, also zog ich ungefähr 6 Millionen Datensätze. Danke Remou –

Antwort

0

Also der Fehler war eigentlich meine Schuld die ID, die ich verwendete, verursachte die Abfrage, um etwa 6 Millionen Ergebnisse zurückgeben. Aber diese Methode funktioniert wirklich gut, ich erstelle nur die Tabelle und verlinke ein Listenfeld in einem anderen Formular mit der Tabelle, dann zeige ich nur das Formular. Ich mache einige Closes und Updates dazwischen, aber insgesamt scheint es gut zu funktionieren. Vielen Dank für die Hilfe

-1

Lassen Sie mich sagen, dass DoCmd.RunSQL ist nie ratsam, insbesondere mit SetWarnings ausgeschaltet, da Sie keine Ahnung haben, ob das Ergebnis ist, was Sie erwarten oder nicht. Sie haben VBA gesagt, keine Fehler zu melden, damit Sie nie wissen, ob alle Datensätze eingefügt wurden oder nicht.

Es ist sehr einfach DoCmd.RunSQL mit meiner SQLRUN() Funktion, hier gepostet zu ersetzen:

How can I get a value from the update query prompt in Access VBA?

0

Anstatt mit DoCmd, t ist in der Regel durch Ihre bestehende Verbindung behandelt ein erstellen Befehlsobjekt, das SQL-Anweisungen zur Verwendung mit der Command.Execute-Methode akzeptiert.

Das Lesen der Dokumentation für DoCmd scheint in erster Linie für das Ausführen von Makros aus den Access UI-Menüs vorgesehen zu sein.

0

Hat die Datenbank die Tabelle ids_temp lokal? Wenn die Tabelle ids_temp die verknüpfte Tabelle ist, wird sie die Tabelle löschen, da sie in CREATES NEW TABLE ausgewählt wird. Wenn Sie zur Tabelle hinzufügen möchten, versuchen Sie den Befehl INSERT INTO. Sie können die Tabelle vor dem Einfügen der Daten reinigen.

Verwandte Themen