Access-VBA-einfache sql-select-Anweisung
Kommen aus Jahren der web-Entwicklung mit PHP und SQL-Anweisungen waren so einfach, in dieser letzten Aufgabe, die ich habe, verpflichtet, zu Unterziehen, mit MS Access und VBA ist absolut gerade meinen Kopf, wie viel es erschwert SQL-Anweisungen. Wohlgemerkt, ich habe keine Kenntnisse über VBA also es könnte sein, sehr einfach und ich bin nicht einfach zu bekommen, aber alles was ich tun möchte ist
"SELECT type FROM tblMatter WHERE id='$id'"
Trage ich meine PHP-cap, möchte ich denken, okay, wir gehen, um eine Zeile von Daten, das ist ein array und ich möchte ein Objekt aus diesem array. Einfach.
VBA, jedoch erschwert die $#!t aus ihm heraus. So weit mein code sieht ungefähr so aus
Dim matterSQL As String
Dim matterRS As Recordset
matterSQL = "SELECT type FROM tblMatter WHERE id'" & id & "'"
Set matterRS = CurrentDb.OpenRecordset(matterSQL)
MsgBox matterRS![type]
CurrentDb
definiert ist, viel viel früher in den code zum öffnen der Verbindung zur Datenbank, und der Fehler ist in der Zeile mit OpenRecordset
mit der Fehlermeldung: Data type mismatch in criteria expression.
Wie gesagt, ich bin neu in VBA, also ich weiß nicht was zum Teufel ich Tue, und alle, die Dokumentation auf dem internet ist bei weitem nicht hilfreich. Aber alles was ich will zu tun ist, um einen Teil der Daten aus der Tabelle.
Vielen Dank im Voraus!
Edit: ich brauchte, um zu bauen auf diese mit der anderen Abfrage, die die Informationen von der letzten Abfrage ausgeführt werden. Gleiche Art von Tortur:
Dim costSQL As String
Dim costRS as Recordset
costSQL = "SELECT email FROM tblScaleOfDisb WHERE category=" & category
Set costRS = CurrentDb.OpenRecordset(costSQL)
MsgBox costRS![email]
Dieser Zeit bekomme ich einen Fehler auf der Zeile mit OpenRecordset
mit der Fehlermeldung: Zu wenige Parameter. Voraussichtlich zum 1.
Was ich nicht verstehe, denn der code ist praktisch die gleiche wie die erste Hälfte der Frage. Was habe ich falsch gemacht?
where id ='"&id&"'"
? Auch parametrisierte Abfrage- was ist der Datentyp der id?
- gewusst Wie: Debuggen von dynamischen SQL in VBA -- Auch: Zeichenketten, zahlen und Datumsangaben müssen verschiedenen Formaten in SQL. Aber dies ist in keiner Weise auf spezielle Access-VBA/SQL.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihnen fehlt
=
im Zustandversuchen unter
Auch wenn
id
numerisch ist, die Sie nicht brauchen'
Zu wenige Parameter. Voraussichtlich zum 1.
Dies geschieht, wenn die Feldnamen in der sql-Abfrage entsprechen nicht die Tabelle Feldname
wenn die Feldnamen richtig sind, glaube ich, dass die den Datentyp Kategorie ist nicht numerisch, dann müssen Sie verwenden
'
Immer versuchen, zu verwenden parametriert Abfrage zur Vermeidung von SQL-injection -
=
über beim erstellen der Frage. Aber ich Tat implementieren die zweite Anregung, die in Ihrer Frage und hat fix meine Frage, aber es gibt eine andere Hälfte, das hat mich verwirrt, bearbeitet die Frage zu reflektieren, die Kämpfedlookup()
Müssen Sie verstehen, oder bereiten Sie einige Dinge, bevor Sie mit dem Programmieren beginnen auf einer neuen Plattform. wie
in Ihrem Fall müssen Sie auch lernen, über MS ACCESS SQL. Die ist ziemlich ähnlich zu standard-SQL, sondern (beschränkt und) stark beeinflusst von MS Access-internen Funktionen.
SQL-Ausführung zurück n Zeilen als Ergebnis. Jede Zeile wird n die Anzahl der Spalten. Sie müssen verstehen, wie Sie brauchen, um eine Schleife durch Ergebnis-sets.
Bitte haben Sie noch einige Fehler-capturing-Verfahren. Ich werde dir helfen, die Richtung zu verstehen, bevor Sie stundenlang in Google.
in Ihrem ersten SQL -: Sie haben ein reserviertes Schlüsselwort Typ. verwenden Sie eckige Klammern, um zu entkommen reservierte Schlüsselwörter. In der where-Bedingung, numerische Felder dürfen keine string-Anführungszeichen und Zeichenfolgen müssen Sie haben.
Tipp: Sie können die MS-Access-visual query builder zum erstellen der Abfrage und kopiere den SQL in VBA.
Liste der reservierten Schlüsselwörter in MS ACCESS: https://support.microsoft.com/en-us/kb/286335
Liste der Funktionen: http://www.techonthenet.com/access/functions/
Fehlerbehandlung : http://allenbrowne.com/ser-23a.html
Reinigen/schließen Sie Ihre Objekte nach Nutzung, indem explizit die Einstellung als nichts: Gibt es eine Notwendigkeit, um Objekte zu Nichts im VBA-Funktionen