Discussion:
Probleme mit Openrecordset und SQL-String mit Parameter
(zu alt für eine Antwort)
Joerg M.
2008-10-21 18:00:04 UTC
Permalink
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
Gunter Avenius
2008-10-21 18:15:11 UTC
Permalink
Hallo Joerg M.,
Post by Joerg M.
Access 2003 und Outlook 2003
...
Post by Joerg M.
Sorry, ich weiß nicht, was ich noch probieren soll (mit der EVAL von DONKARL
hab ich es auch schon versucht).
.....txtAz)='" & cmbAz & "'));"

Vor und nach dem Anführungszeichen einen Fliegendreck ( ' ) einfügen.
Post by Joerg M.
Zusatz: Weiß jemand, wie ich die gebundene Spalte festlege, wenn es mal
nicht die Spalte 1 (column(0)) sein soll?
column(1) ?

Gruß
Gunter
--
__________________________________________________________
Access FAQ: http://www.donkarl.com
11. Access-Entwickler-Konferenz http://donkarl.com/?AEK
Nürnberg, 18./19.10. + 25./26.10.2008

home: http://www.avenius.com - http://www.AccessRibbon.de
http://www.ribboncreator.de
Joerg M.
2008-10-21 18:28:03 UTC
Permalink
Hallo Gunter,
......txtAz)='" & cmbAz & "'));"
Vor und nach dem Anführungszeichen einen Fliegendreck ( ' ) einfügen.
super, funktioniert perfelt.
Post by Joerg M.
Zusatz: Weiß jemand, wie ich die gebundene Spalte festlege, wenn es mal
nicht die Spalte 1 (column(0)) sein soll?
column(1) ?
schön wäre es gewesen :-)
aber ich werde mal weiter probieren, das bekomme ich schon raus.

schönen feierabend!

danke nochmal

gruß joerg
Peter Doering
2008-10-21 18:38:56 UTC
Permalink
Hallo,
Post by Joerg M.
Hallo Gunter,
Post by Gunter Avenius
Post by Joerg M.
Zusatz: Weiß jemand, wie ich die gebundene Spalte festlege, wenn es mal
nicht die Spalte 1 (column(0)) sein soll?
column(1) ?
schön wäre es gewesen :-)
aber ich werde mal weiter probieren, das bekomme ich schon raus.
Me!Kombi.BoundColumn = 2

Gruss - Peter
--
Anmeldung zur 11. AEK unter www.donkarl.com/?AEK
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com
Peter Doering
2008-10-21 18:18:29 UTC
Permalink
Hallo,
Post by Joerg M.
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.
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""));"
"WHERE tblVorgang.txtAz='" & Me!cmbAz.Value & "';"

Gruss - Peter
--
Anmeldung zur 11. AEK unter www.donkarl.com/?AEK
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com
Henry Habermacher
2008-10-24 06:46:07 UTC
Permalink
Hallo Joerg
Post by Joerg M.
Access 2003 und Outlook 2003
Ich habe in Outlook VBA einen Zugriff auf MSAccess hergestellt.
Gut und schön, aber kannst Du für die nicht Eingeweihten noch sagen, was das
ganze mit Outlook zu tun hat?

Gruss
Henry
--
11. AEK Anmeldung unter http://donkarl.com/?AEK
Microsoft MVP Office Access
Keine E-Mails auf Postings in NGs. Danke.
Access FAQ www.donkarl.com
Loading...