PDA

View Full Version : Query starten mit VBA



rbgies
29-11-04, 09:43
Hallo zusammen,
ich habe mit VBA eine Verbindung zur AS400 erstellt. Nun möchte ich
von VBA aus ein Query starten. Leider finde ich keinen Befehl mit dem ich
dieses Query ausführen kann. Ich kenne leider den Befehl hierfür nicht,da
ich kaum AS400 Erfahrung habe.

Das habe ich bis jetzt gemacht:

Dim myas400
Dim mydtaq
Dim myConv
Dim myData
Set myas400 = CreateObject("cwbx.As400system")
Set mydtaq = CreateObject("cwbx.DataQueue")
Set myConv = CreateObject("cwbx.StringConverter")
myas400.Define "MYAS400"
myas400.Connect 6 'cwbcoServiceDataQueues
mydtaq.LibraryName = "rbgies"
mydtaq.QueueName = "gitest"


Set myas400 = Nothing
Set mydtaq = Nothing
Set myConv = Nothing



Viele Grüße Ronald

Fuerchau
29-11-04, 10:02
Was du da aufgebaut hast, dient der Programm-Programm-Kommunikation.
Für eine Datenabfrage (Query) benötigst du eine ODBC-Verbindung und zwar genauso wie zu jeder anderen Datenbank auch.
Du verwendest hierzu die Connection-, Command- und Recordset-Objekte das MS-ADO. Beispiele findest du hier im Forum unter "ADO".

Hinweis: Mit dem Provider IBMDA400 gibt es nur eingeschränkte Funktionalität. Verwende besser den Standardprovider mit "DSN=MyDsn" und konfiguriere die ODBC-Verbindung mit dem CA-ODBC-Treiber.

rbgies
29-11-04, 10:49
Ok. Aber irgendwie find ich den Befehl (auch bei ODBC) nicht.
ODBC erstellt immer eine neue SQL Abfrage. Wenn ich auf der
AS400 ca 20 fertige Querys habe möchte ich diese "nur" von von
Excel aus anstoßen.
Etwa so. Starte Query 1
Starte Query 2.....

Vielleicht denke ich auch nur zu kompliziert.

Fuerchau
29-11-04, 15:23
Queries der AS/400 kannst du aus VBA nicht direkt aufrufen.
Hierfür musst du ein CALL auf das Programm QCMDEXC mit dem Kommando RUNQRY absetzen.
Ich glaube aber nicht, dass das das Gewünschte ist.

Du musst die Queries in Excel neu definieren und kannst dann diese Abfragen jederzeit aus Excel aktualisieren (inkl. Parameter). VBA ist daufür absolut unnötig.

Schau dir mal folgenden Beitrag an:
http://www.rlpforen.de/showthread.php?t=4841&highlight=excel+query

rbgies
29-11-04, 17:30
Auf die Gefahr hin das ich nerve.

Ich gebe dir Recht, dass es einfacher ist Querys mit Excel neu zu
erstellen. Diese vorhandenen Querys sind jedoch recht zahlreich und
komplex (Join hin Join her..). Aus diesem Grund scheue ich mich
(soll wie immer auch schnell gehen :-) )die Dinger neu zu erstellen.
Darum wäre es schön, wenn du mir den Syntax für
CALL bzw. QCMDEXC und das Komando RUNQRY aufschreiben könntest.

Neue Querys erstelle ich ab jetzt in Excel.

Gruß Ronald

Fuerchau
29-11-04, 18:35
Das bringt insofern nichts, als dass du die Queries noch in eine Datei umleiten musst und diese dann erst per SQL (also Excel-Query) wieder runterladen kannst.

Aber:
Vielleicht hilft dir ja der RTVQMQRY !
Mit diesem kannst du aus *QRYDFN-Objekten den Select in eine SRCPF konvertieren. Diese Source kannst du dann per Copy-Paste in den MS-Query (Ansicht SQL) kopieren.

Allerdings gehen dir dabei die Gruppendefinitionen, Summen, Zwischensummen usw. verloren. Du erhältst den nackten Select.

Was das QCMDEXC angeht, so gibt es auch hier entsprechende Beispiele, die du mit einem Command-Object und der Execute-Methode ausführen kannst. Allerdings benötigtst du trotzdem Programmieraufwand.

Einfacher ist es mit Sicherheit (auch wenn es am Anfang nervt) die Queries nach MS-Query zu portieren.