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!

War es hilfreich?

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ügen
if 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")
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top