PDA

Vollständige Version anzeigen : Kann nicht auf Werte meiner Abfrage aus VBA zugreifen


spassmann
13.06.2001, 13:40
Hallo Ihr Mitstreiter da draussen, bin grad völlig genervt von meinem Access.
Ich habe im Beitrag "Werte aus Tabelle mit VBA auslesen" von MIKES gelesen wie das gehen könnte. Nun ich habe eine Abfrage in der diese Werte stehen und habe einfach versucht auf die gleiche Weise drauf zuzugreifen. Wenn ich die Deklarationen
Dim DB AS Database oder Dim DB AS DAO.Database vereinbare, dann schreit mich mein Compiler an "Benutzerdefinierter Typ nicht definiert."

Wenn es eine andere Möglichkeit gibt, die Werte mit VBA auszulesen dann zögert nicht und schreibt.
Brauche das wirklich dringend für meine Praktikumsarbeit und ich habe nicht mehr viel Zeit. Ich danke euch schonmal im Voraus.
Bitte Bitte helft mir

A.S.
13.06.2001, 14:00
Geh mal in das Modul und schaue unter Extras/Verweise ob da die DAO-Bibliothek aktiviert ist. Dann sollte sie noch nach Möglichkeit über der ADO-Bibliothek positioniert sein.

Gruß

Arno

spassmann
13.06.2001, 14:21
Ja Dankeschön den Fehler meckert er jetzt nicht mehr an, aber ich habe nicht verstanden wie das mit dem über ADO positioniert sein gemeint war.
Jetzt bekomme ich nämlich noch eine Fehlermeldung: "Laufzeitfehler 3061 - 3 Parameter wurden erwartet, aber zu wenige übergeben."

Der Debugger steht in der Zeile:
set rs = db.openRecordset ("Abfragename", DB_OPEN_SNAPSHOT)

Was ist denn da wieder falsch? Konnte mir durch die Hilfe nicht zusammenreimen, was ich hier verändern muss.
Trotzdem schonmal Dankeschön

spassmann
13.06.2001, 14:30
Ja Dankeschön den Fehler meckert er jetzt nicht mehr an, aber ich habe nicht verstanden wie das mit dem über ADO positioniert sein gemeint war.
Jetzt bekomme ich nämlich noch eine Fehlermeldung: "Laufzeitfehler 3061 - 3 Parameter wurden erwartet, aber zu wenige übergeben."

Der Debugger steht in der Zeile:
set rs = db.openRecordset ("Abfragename", DB_OPEN_SNAPSHOT)

Was ist denn da wieder falsch? Konnte mir durch die Hilfe nicht zusammenreimen, was ich hier verändern muss.
Trotzdem schonmal Dankeschön

Morli
13.06.2001, 14:35
Hallo spassmann,

poste doch mal deine SQL, eventuell wird's dann klarer!

Gruß

Rainer :)

A.S.
13.06.2001, 14:47
Es gibt unter A00 zwei unterschiedliche Datenzugriffsmöglichkeiten: DAO und ADO. ADO ist die neue - AFAIK Standardmässig von A00 verwandte -, DAO ist die alte Datenzugriffsmethode die von A97 etc. zwecks Kompatibilität übernommene. ADO enthält teilweise dem DAO identische Funktionen und wird von A00 ständardmäßig in der Priorität höher eingestuft als die DAO-Bibliothek. Deshalb muß die DAO-Bibliothek in den Verweisen über der ADO-Bibliothek angesiedelt werden, damit der VBA-Interpreter die DAO-Routinen vor den ADO-Routinen prüft, wenn DAO und nicht ADO genutzt wird.

Gruß

Arno

spassmann
14.06.2001, 09:15
Danke für eure Hilfe, habe das jetzt mit DLookup gemacht, da bekomme ich ganz einfach die Werte habe nur das Problem, das der jetzt nicht in den nächsten Datensatz springt.

WAG
14.06.2001, 10:42
schau mal hier nach. <** ModeratorCut **>
Dieter

[Dieser Beitrag wurde von ArnoSimon am 14.06.2001 editiert.]

A.S.
14.06.2001, 10:50
Hallo Dieter,

da der IP-LookUp nur für die Moderatoren und Administratoren zur Verfügung steht, habe ich den entsprechenden Link darauf - sicherlich versehentlich angegeben - herausgenommen.

Gruß

Arno

WAG
14.06.2001, 11:01
Hallo Arno,
wie realisiere ich denn so einen Verweis auf die Frage von Nicol am 12.6.01 ?

Dieter

A.S.
14.06.2001, 11:18
Hallo Dieter,

wie ist denn Nicol's Benutzername? habe gerade die letzten 30 Tage durchsuchen lassen und bin leider nicht fündig geworden.

Ansonsten: Oben rechts die Suche ist Dir ja sicherlich bekannt. Mit den entsprechenden Suchkriterien die Beiträge heraussuchen lassen und aus der Ergebnissliste den Beitrag aufrufen, welchen Du haben bzw. referenzieren möchtest. Wenn der Beitrag auf dem Schirm aus der Adress-Zeile Deines Browsers die Adresse kopieren und in Deinen neuen Beitrag einfügen.

Die von Dir angegebene URL erhälst Du nur wenn Du versehentlich auf den rechts unten in den einzelnen Beiträgen stehenden Link "IP: gespeichert" klickst. Da ein normaler Benutzer hier damit nichts anfangen kann, habe ich den natürlich rausgenommen ;)

Gruß

Arno

WAG
14.06.2001, 11:30
Hallo Arno,
irgendwie funktioniert die Suche heute nicht.
Seite 3 Nicol 12.6.01 08:06.
Ich wollte eigentlich auf meine 2.Antwort an Nicol positionieren weil die 1. Antwort fehlerhaft ist.

Dieter

A.S.
14.06.2001, 11:41
Hallo Dieter,

was Du vorhast, geht nicht. Du kannst nur auf die Url eines kompletten Beitrags, also Anfrage inklusive aller Antworten, verweisen. Die Angabe um die wievielte Antwort es sich handelt, mußt Du in Deinem Text unterbringen....

Ich für meinen Teil setze bei solchen Verweisen voraus, das die Leute des Lesens mächtig sind und die Beiträge komplett lesen, bevor sie sie verwerten ;)

Gruß

Arno

WAG
14.06.2001, 12:03
Danke Arno,
aber wann funktioniert die Suche wieder?

Dieter

GustavKurz
14.06.2001, 15:37
Hallo, Spassmann!
Die von Dir beschriebene Fehlermeldung "Laufzeitfehler 3061 - 3 Parameter wurden erwartet, aber zu wenige übergeben." beim versuch des Zugriffs über VBA hat mit ziemlicher sicherheit folgenden Grund:
In Deiner Abfrage existieren Einschränkende Kriterien, die auf Formulartextfelder verweisen.
Damit kann VBA nichts anfangen.
Du solltest versuchen die Kriterien vorher aus dem Formular zu holen...
Dim Text1, Text2, Text3
Text1 = Me.Feldsoundso
u.s.w
... und anschließend dem Recordset...
set rs = db.openRecordset ("select * from Tabelle WHERE MeinFeld1 ='" & Text1 & "'AND MeinFeld2 ='" & Text2 & "'AND MeinFeld3 ='" & Text3 & "'"", DB_OPEN_SNAPSHOT)
...übergeben.
Ich hoffe, das war einigermaßen verständlich :-)

Gustav Kurz

Günther Kramer
15.06.2001, 06:54
Hallo WAG,

die Suche müsste jetzt wieder gehen.

A.S.
15.06.2001, 09:52
Hallo Gustav,

solange die Formulare offen sind, auf deren Textfelder referenziert wird, habe ich unter VBA noch nie Probleme gehabt dergestallt gesteuerte Abfragen als Recordset zu öffenen.

Gruß

Arno

Sascha Trowitzsch
16.06.2001, 11:34
...Ein ellenlanger Thread mit wenig Ergebnissen...

Spassmann, deine Abfrage ist wohl eine Parameterabfrage; d.h. sie braucht 3 Kriterienangaben, um zu funktionieren.
Führe die Abfrage erstmal konventionell aus, dann siehst du, welche Angaben sie haben will (Msgboxen öfnnen sich jeweils).
Merk dir die Namen der abgafragten Kriterien.

Eine Parameterabfrage in VBA kann nicht mit

set rs = db.openRecordset ("Abfragename", DB_OPEN_SNAPSHOT)

geöffnet werden. Es ist zuerst die Abfrage als QueryDef zu definieren, diesem dann die Parameter zuzuordnen und dann das RecordSet des QueryDef zu öffnen. Beispiel:

Dim qry as Querydef
Dim dbs as Database
Dim RS as Recordset

Set dbs=CurrentDB
Set qry=dbs.Querydefs("Abfragename")
qry.Parameters("Parameter1")= irgendeinwert1
qry.Parameters("Parameter2")= irgendeinwert2
qry.Parameters("Parameter3")= irgendeinwert3
Set RS=qry.OpenRecordset(dbOpenSnapshot)
...

Statt ...Parameters("Parameter1") kann auch nur Parameters(1) stehen. ("Parameter1" ist der Name des ersten Kriteriums, das die Abfrage haben wollte)

Ciao, Sascha