Joerg M.
2008-10-21 18:00:04 UTC
Hi,
Access 2003 und Outlook 2003
Ich habe in Outlook VBA einen Zugriff auf MSAccess hergestellt.
Im Formular gibt es ein DropDown (cmbAz) mit Werten. Die Werte sollen dann
beim SQL mit verarbeitet werden, als Filterkriterium für eine Spalte aus dem
SQL, nämlich tblVorgang.txtAz. Das Ergebnis wird über ein Array einem anderen
Kombinationsfeld als Datengrundlage zur Verfügung gestellt, um sozusagen die
passenden Auswahlwerte zu erhalten.
Gebe ich in der Where-Bedingung fest den Wert ein, der eigentlich flexibel
aus dem DropDwon cmbAz kommen soll, funktioniert es.
Hier der Code:
Private Sub cmbAz_Change()
Dim rst As DAO.Recordset
Dim cmbVgArray(99, 2)
Dim ctl As Object
Dim strSQL
Dim oDataBase As DAO.Database
Dim a As String
Set oDataBase = OpenDatabase("Pfad\Datenbank.mdb")
strSQL = "SELECT tblVorgang.txtVg, tblVorgang.txtOn, tblVorgang.txtVgName "
& _
"FROM tblAz RIGHT JOIN tblVorgang ON tblAz.txtAz = tblVorgang.txtAz " & _
"WHERE (((tblVorgang.txtAz)=""100000""));"
Set rst = oDataBase.OpenRecordset(strSQL, dbOpenSnapshot)
Set ctl = UserForm2.cmbVgOn
ctl.ColumnCount = 3
cmbVgArray(99, 2) = rst.GetRows(100)
ctl.Column() = cmbVgArray(99, 2)
End Sub
Jetzt soll das ganze ja nicht fest verdrahtet sein, sondern abhängig davon
sein, was im DropDwon cmbAz gewählt wird (z.B. der Wert 100000).
Ich habe nun versucht, die Where-Klausel wie folgt anzupassen:
"WHERE (((tblVorgang.txtAz)=""cmbAz""));"
Laufzeitfehler 3021: Kein aktueller Datensatz
"WHERE (((tblVorgang.txtAz)="cmbAz"));"
Fehler beim Kompilieren - Erwartet: Anweisungsende
"WHERE (((tblVorgang.txtAz)=" & cmbAz & "));"
Laufzeitfehler 3464: Datentypen in Kriterienausdruck unverträglich
[Hinweis: tblVorgang.txtAz ist in Access als Textfeld definiert]
dim a as string
a = cmbAz
"WHERE (((tblVorgang.txtAz)=" & a & "));"
Laufzeitfehler 3464: Datentypen in Kriterienausdruck unverträglich
dim a as string
a = "100000
"WHERE (((tblVorgang.txtAz)=" & a &"));"
Laufzeitfehler 3464: Datentypen in Kriterienausdruck unverträglich
Sorry, ich weiß nicht, was ich noch probieren soll (mit der EVAL von DONKARL
hab ich es auch schon versucht).
Wer kann mir helfen?
Zusatz: Weiß jemand, wie ich die gebundene Spalte festlege, wenn es mal
nicht die Spalte 1 (column(0)) sein soll?
Besten Dank,
Gruß Jörg
Access 2003 und Outlook 2003
Ich habe in Outlook VBA einen Zugriff auf MSAccess hergestellt.
Im Formular gibt es ein DropDown (cmbAz) mit Werten. Die Werte sollen dann
beim SQL mit verarbeitet werden, als Filterkriterium für eine Spalte aus dem
SQL, nämlich tblVorgang.txtAz. Das Ergebnis wird über ein Array einem anderen
Kombinationsfeld als Datengrundlage zur Verfügung gestellt, um sozusagen die
passenden Auswahlwerte zu erhalten.
Gebe ich in der Where-Bedingung fest den Wert ein, der eigentlich flexibel
aus dem DropDwon cmbAz kommen soll, funktioniert es.
Hier der Code:
Private Sub cmbAz_Change()
Dim rst As DAO.Recordset
Dim cmbVgArray(99, 2)
Dim ctl As Object
Dim strSQL
Dim oDataBase As DAO.Database
Dim a As String
Set oDataBase = OpenDatabase("Pfad\Datenbank.mdb")
strSQL = "SELECT tblVorgang.txtVg, tblVorgang.txtOn, tblVorgang.txtVgName "
& _
"FROM tblAz RIGHT JOIN tblVorgang ON tblAz.txtAz = tblVorgang.txtAz " & _
"WHERE (((tblVorgang.txtAz)=""100000""));"
Set rst = oDataBase.OpenRecordset(strSQL, dbOpenSnapshot)
Set ctl = UserForm2.cmbVgOn
ctl.ColumnCount = 3
cmbVgArray(99, 2) = rst.GetRows(100)
ctl.Column() = cmbVgArray(99, 2)
End Sub
Jetzt soll das ganze ja nicht fest verdrahtet sein, sondern abhängig davon
sein, was im DropDwon cmbAz gewählt wird (z.B. der Wert 100000).
Ich habe nun versucht, die Where-Klausel wie folgt anzupassen:
"WHERE (((tblVorgang.txtAz)=""cmbAz""));"
Laufzeitfehler 3021: Kein aktueller Datensatz
"WHERE (((tblVorgang.txtAz)="cmbAz"));"
Fehler beim Kompilieren - Erwartet: Anweisungsende
"WHERE (((tblVorgang.txtAz)=" & cmbAz & "));"
Laufzeitfehler 3464: Datentypen in Kriterienausdruck unverträglich
[Hinweis: tblVorgang.txtAz ist in Access als Textfeld definiert]
dim a as string
a = cmbAz
"WHERE (((tblVorgang.txtAz)=" & a & "));"
Laufzeitfehler 3464: Datentypen in Kriterienausdruck unverträglich
dim a as string
a = "100000
"WHERE (((tblVorgang.txtAz)=" & a &"));"
Laufzeitfehler 3464: Datentypen in Kriterienausdruck unverträglich
Sorry, ich weiß nicht, was ich noch probieren soll (mit der EVAL von DONKARL
hab ich es auch schon versucht).
Wer kann mir helfen?
Zusatz: Weiß jemand, wie ich die gebundene Spalte festlege, wenn es mal
nicht die Spalte 1 (column(0)) sein soll?
Besten Dank,
Gruß Jörg