Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Abfrage per VBA erzeugen

1,129 views
Skip to first unread message

Peter Sander

unread,
Apr 20, 2004, 9:14:39 AM4/20/04
to
Hallo zusammen.

Ich möchte gerne per VBA eine Abfrage erstellen, die dann unter 'Abfragen'
im Datenbankfenster sichtbar wird.

Ich habe also einen String mit der SQL Abfrage ("SELECT Kunden.[Kunden-ID],
BLZ.Bezeichnung, BLZ.Ort...."), die ich gerne unter einem bestimmten Namen
in Access XP ablegen möchte.

Das brauche ich deshalb, weil die Tabellennamen auf die sich die Abfragen
stützen, wechseln können (Verknüpfungen).

Danke im voraus

Peter


Jürgen Volke

unread,
Apr 20, 2004, 9:49:45 AM4/20/04
to
Hallo Peter

am einfachsten erstellst du die Abfragen einmal per Hand und änderst
dann per Code den SQL-Code:

set qdf=currentdb.Querydefs("DeineAbfrage")
qdf.SQL="SELECT ....."
set qdf = nothing

HTH Jürgen


Jörg Ackermann

unread,
Apr 20, 2004, 9:53:01 AM4/20/04
to
Hi,

Peter Sander schreibselte:

Die QueryDefs-Auflistung sollte Dir helfen. <F1>
Dieser kannst Du per Append eine neue Abfrage anfügen.

alternativ kannst Du CreateQueryDef verwenden.

Du kannst einer bestehenden Abfrage auch jederzeit
einen neuen SQL-String zuweisen.
schau Dir dazu die SQL-Eigenschaft des QueryDef-Objektes
an.

Beispiele in der OH

HTH
Gruß

Peter Doering

unread,
Apr 20, 2004, 9:59:04 AM4/20/04
to
Hallo,

On Tue, 20 Apr 2004 15:14:39 +0200, Peter Sander wrote:

> Ich möchte gerne per VBA eine Abfrage erstellen, die dann unter 'Abfragen'
> im Datenbankfenster sichtbar wird.
>
> Ich habe also einen String mit der SQL Abfrage ("SELECT Kunden.[Kunden-ID],
> BLZ.Bezeichnung, BLZ.Ort...."), die ich gerne unter einem bestimmten Namen
> in Access XP ablegen möchte.

With CurrentDB
.CreateQueryDef "QDF_Name", "SELECT Kunden.[Kunden-ID], ..."
.QueryDefs.Refresh
End With

Gruss - Peter

--
Ich beantworte keine Fragen per Email.
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com

Michel Fouquet

unread,
Apr 20, 2004, 10:39:45 AM4/20/04
to
Hallo Peter,

"Peter Sander" <pedde...@gmx.de> schrieb im Newsbeitrag
news:c637u3$5pk$03$1...@news.t-online.com

manchmal hilft es, wenn man einfach mal die Postings dieser NG liest.
Gerade mal vorgestern hatten wir hier die Frage von Axel Janßen mit dem
doch eigentlich ziemlich verständlichen Betreff

"Abfrage"objekt" per VBA erstellen und löschen"

Naja, lieber die anderen tippen lassen als selber mal zu lesen: ist auch
'ne Lösung.

mfg,
Michel

Ralf Pfeifer

unread,
Apr 20, 2004, 3:09:36 PM4/20/04
to
Peter Sander wrote:

Statt Abfragen auf eingebundene Tabellen zu setzen, kannst Du auch
sofort Tabellen in der fremden Datenbank abfragen, z.B.

SELECT * FROM [Tabelle1] In 'C:\Eigene Dateien\Andere.MDB'

Das spart Dir das Einbinden von wechselnden Tabellen.


Gruß, Ralf.


--
www.ArsTechnica.de --- www.ArsMartialis.com

Olaf Rabbachin

unread,
Apr 21, 2004, 4:02:42 AM4/21/04
to
Hi,

On Tue, 20 Apr 2004 21:09:36 +0200, Ralf Pfeifer wrote:

> Statt Abfragen auf eingebundene Tabellen zu setzen, kannst Du auch
> sofort Tabellen in der fremden Datenbank abfragen, z.B.
>
> SELECT * FROM [Tabelle1] In 'C:\Eigene Dateien\Andere.MDB'
>
> Das spart Dir das Einbinden von wechselnden Tabellen.

BTW - das geht auch per ...
SELECT * FROM [C:\path\myDB.mdb].myTable

Hab' allerdings nie geprüft, ob es Performanceunterschiede gibt ...

Bis dann,
Olaf [MVP]
--
Bitte keine emails auf NG-postings.

My .02: www.Resources.IntuiDev.com

Peter Sander

unread,
Apr 22, 2004, 1:47:27 AM4/22/04
to
Hallo und Danke für die Tipps.

Ich denke ich werde mein Problem mit QueryDef lösen können. Es gibt ja
Situationen (oder Kreationen von Tabellen) wo man zwei Abfragen benötigt um
zum Ergebnis zu gelangen. Dabei basiert eine Abfrage auf einer anderen
Abfrage. Und das habe ich mit "Select..." von Hand nicht auf die Kette
bekommen bzw. das scheint mit einem einzigen Select-String nicht zu gehen.

Zudem liegen die Tabellen, denen ich ein paar Daten entlocken möchte in
einer externen mySql, die ich per ODBC anspreche.

Zu guter letzt können dort die Tabellennamen noch variieren.

Habe übrigens festgestellt, dass man externe Tabellen per ODBC mit dem
Originalnamen einbinden, dann aber einfach umbenennen kann ohne dass die
Verbindung zu den Tabellen verloren geht.

Ich erstelle mir also eine Verbindung zu den Tabellen (stelle damit fest,
wie diese heißen) und baue dann per Programm die beiden Abfragen neu. Neu
deshalb, weil Access die Feldnamen der Abfragen beim wechsel der
Tabellenvernüfungen in 'Ausdr.1: [Feldname]' ändert.

Ich hoffe ich habe jetzt kein wirres Zeug geschildert...


Trotzdem Danke nochmal. Ich teste mal und berichte dann. Amerika wurde auch
nur über Umwegen endeckt :-)

Tschö

Peter Sander


"Peter Sander" <pedde...@gmx.de> schrieb im Newsbeitrag

news:c637u3$5pk$03$1...@news.t-online.com...

Ralf Pfeifer

unread,
Apr 22, 2004, 4:02:06 PM4/22/04
to
Olaf Rabbachin wrote:


> BTW - das geht auch per ...
> SELECT * FROM [C:\path\myDB.mdb].myTable
>
> Hab' allerdings nie geprüft, ob es Performanceunterschiede gibt ...

Sehr interessant! Das werde ich mal probieren, ich baue mir die
Abfragen öfter selbst im Code zusammen. Mit der Version
könnte es ein wenig übersichtlicher gehen.

0 new messages