Rookie SQL innerhalb von VB Frage - MS Access 2003
-
07-07-2019 - |
Frage
Hey Leute, kann mir jemand helfen, mit einer einfachen Frage. Ich habe diese SQL-Anweisung unten in einem Unter in VB innerhalb Zugriff von einem Button-Klick, und ich bin neu in diesem.
Hier ist, was ich getippt:
Private Sub Command0_Click()
Dim rs As Recordset
Dim sql As String
Dim db As Database
Set db = CurrentDb
sql = "SELECT * FROM Transactions"
Set rs = db.OpenRecordset(sql)
Do Until rs.EOF
rs.MoveNext
Loop
If Not rs.EOF Then
MsgBox "test"
End If
End Sub
Ok, so wie ich bevölkern diese ?? Im Grunde bin ich mit diesem Justing anfangen so frage ich mich, wie mache ich diesen einfachen Code, und es wie eine Abfrage ausführen, so dass das resultierende Recordset öffnet.
Danke!
Lösung
einige andere Bemerkungen und Hinweise:
1) immer angeben, welche Art von Re-Cord Sie verwenden. Hier scheint es sich um eine DAO-Cord zu sein, also gehen Sie für eine vollständige Erklärung wie:
Dim rs as DAO.recordset
auf einem anderen Computer Runing, und je nach der Reihenfolge der Deklaration von ADODB und DAO-Bibliotheken, die sehr gleiche Code einen Fehler erzeugen kann.
2) Um eine störende Fehlermeldung zu vermeiden, wenn kein Eintrag vorhanden ist, können Sie einen zusätzlichen Test, so etwas wie
hinzufügenif rs.recordcount = 0 then
Else
rs.moveFirst
....
3) Um den vollständigen Re-Cord mit debug.print zu sehen, könnte man es auf diese Weise tun. Nur ad a 'm_debugLine' als String und ein 'FLD' als DAO.Field in Ihren Erklärungen.
rs.MoveFirst
do while not rs.eof
m_debugLine = ""
for each fld in rs.fields
m_debugLine = m_debugLine + vbTab + fld.value
next fld
debug.print m_debugLine
rs.movenext
loop
4) Sie könnten sogar eine debug.print Zeile hinzufügen, die Daten aus den Feldnamen drucken vor dem Druck. Ich denke, Sie werden diesen einen finden
Andere Tipps
Je nachdem, was Sie versuchen zu tun, können Sie über-komplizieren diese. Ein besserer Ansatz wäre es, die Datenherkunft des Formulars zu setzen (in der Karteikarte) an die Transaktionen Tabelle dann die Felder fallen Sie auf dem Formular der visuellen Designer verwenden mögen.
Wenn Sie jedoch wirklich es auf diese Weise tun müssen, hier ist der Code, ersetzen, was Sie haben und eine Tabelle Ansicht, wie die Daten in der Tabelle Transaktionen öffnen.
Private Sub Command0_Click()
docmd.Opentable "transactions"
End Sub
Wenn Sie die Ergebnisse einer Abfrage zu begrenzen, dann zuerst die Abfrage erstellen und speichern Sie dann den folgenden Code verwenden.
Private Sub Command0_Click()
docmd.OpenQuery "MyQueryName"
End Sub
extrem wörtlichen sein, Ihr ursprünglicher Code DID einen Re-Cord bevölkert (in der RS-Objekt). Sie können die Felder über den Namen zugreifen Code in Ihrer while-Schleife verwenden wie
debug.print rs("Field1")
Sie legen Ihren Code innerhalb des Do..Loop. Dieser Code wird für jeden Datensatz ausgewertet werden, die angetroffen wird.
Do Until rs.EOF
Msgbox "The value for MyField is " & rst!MyField
rs.MoveNext
Loop
erhalten Sie bei den Spalten des Datensatz für den Re-Cord wie rs (0) oder rs ( "column") ....
Wenn Sie Ihre Transaktionen Tabelle hat drei Spalten mit den Namen a, b, c Sie bekommen könnten es mögen:
rs(0)
rs(1)
rs(2)
oder
rs("a")
rs("b")
rs("c")