-
Call-Befehl über VBA an AS400 funktioniert nicht
Hallo,
iServer V5R3 und VBA (dotnet)
Ich habe hier im Forum recherchiert und möchte über VBA eine Query auf der AS400 starten und gebe über VBA noch einen Parameter mit. Unten genannter Code wird per VBA (dotnet) ohne Fehlermeldung ausgeführt (der hinterlegten Query auf der AS400 wird ein Parameter VAR1 übergeben), doch die PF-Datei(Tabelle) wird nicht mit dem übergebenen Parameter überschrieben. Der abgesetzte CallCmd-Befehl funktioniert einwandfrei, wenn man ihn in der Befehlszeile der AS400 absetzt. Über VBA will das aber nicht funktionieren und die PF-Datei hat seinen alten Stand. Warum wird der Call nicht ausgeführt?
Vielen Dank für Eure Hilfe.
Dim cnn As ADODB.Connection
'Dim cmd As ADODB.Command
cnn = New ADODB.Connection
Dim CallCmd As String
cnn.Open("Provider=IBMDA400;" & _
"Data Source=AS400Server;" & _
"User ID=USER;" & _
"Password=PWD;")
CallCmd = "STRQMQRY QMQRY(TRUMPFH/TTRAJJLIP9) ALWQRYDFN(*YES) SETVAR((VAR1 0519617))"
cnn.Execute("CALL QSYS.QCMDEXC ('" & CallCmd & "', " & Format(Len(CallCmd), "0000000000.00000") & ")")
cnn.Close()
-
STRQMQRY gibt die Daten am Bildschirm aus.
Für eine Dateiausgabe ist OUTPUT(*OUTFILE) erforderlich.
Allerdings frage ich mich, warum du den Select nicht direkt selber verwendest, das wäre erheblich schneller.
-
Hallo Herr Fuerchau,
... ist das so richtig:
CallCmd = "STRQMQRY QMQRY(TRUMPFH/TTRAJJLIP9) OUTPUT(*OUTFILE) OUTFILE(TRUMPF/TTRAJJLIP9) ALWQRYDFN(*YES) SETVAR((VAR1 0519617))"
Danke.
Wie müsste ich denn, denn Select einbauen?
-
Schau dir den Inhalt deines QMQRY einfach an. Wenn die Basis ein QRYDFN ist, kannst du per RTVQMQRY den Select in eine SRC-PF kopieren.
Diesen Select gibst du halt per Execute an.
Du kannst dann
a) VAR1 direkt per Replace vorher ersetzen
b) Statt VAR1 einen Parametermarker "?" setzen und per Command-Object den Select ausführen.
Du erhältst dann ein Recordset.
Schließlich holst du doch die Daten auch per Select ab, oder ?
-
...verstehe ich das richtig, das heißt bspw.:
die bestehende query (definiert als *QRYDFN -->
TTRAJJLIP9 *QRYDFN QRY Verkaufte Tore (Nach Land)
kann ich mit einem geändertem select-Befehl überschreiben?
Können Sie mir bitte einen Tipp geben, wie der Befehl RTVQMQRY aussehen muss?
Was müsste dann in der Klammer beim Befehl cnn.execute() übergeben werden?
...
cmd = select idr, kdnr from tabelle1 where kdnr = ?
cnn.execute(cmd)
Hätten Sie evt einen kurzen Codeausschnitt an dem ich mich orientieren könnte?
Tausend Dank für Ihre Hilfe.
-
Deine Fragen verstehe ich jetzt überhaupt nicht mehr.
Benötigst du eine Einweisung, wie man per ODBC Daten von der AS/400 per Select abruft ?
Schau dir doch bitte einfach die ODBC-Beispiele in der MSDN oder der ADO-Dokumentation an.
Diese findist du in deinem Windows-Verzeichnis in Help, ADO-Hilfe.
-
Oh nein, nein - Selects und ODBC sind nicht das Problem. Es geht mir um die Umsetzung des Befehls RTVQMQRY im Zusammenspiel mit VBA. Ich habe ja diese zwei funktionierende Befehlszeilen:
CallCmd = "STRQMQRY QMQRY(TRUMPFH/TTRAJJLIP9) OUTPUT(*OUTFILE) OUTFILE(TRUMPFH/TTRAJJLIB9) ALWQRYDFN(*YES) SETVAR((VAR1 0519617))"
cnn.Execute("CALL QSYS.QCMDEXC ('" & CallCmd & "', " & Format(Len(CallCmd), "0000000000.00000") & ")")
Ich habe nicht ganz die Umsetzung mit RTVQMQRY verstanden. Wie kann das denn jetzt aussehen?
-
Nicht in VBA lösen, sondern manuell den Select auf der AS/400 ansehen und in dein VBA für ein Command-Objekt kopieren.
Hast du ein QRYDFN-Objekt kannst du per RTVQMQRY (Bedienung siehe F1-Hilfe) das QRYDFN in eine Quelle schreiben.
Ansonsten kannst du per STRQM->1 dir den SQL ja ansehen und ins VBA kopieren.
-
...ist das korrekt von der Syntax:
CallCmd = STRQMQRY QMQRY(SELECT DISTINCT A.LINDLL A.LIKNR A.LIRAL A.LIMENG A.LIBREI
A.LIHOCH A.LIHGRT FROM "TRUMPFH"/"TTRAJJLIP9" A WHERE (LIKNR = 0512079))
cnn.Execute("CALL QSYS.QCMDEXC ('" & CallCmd & "', " & Format(Len(CallCmd), "0000000000.00000") & ")")
-
Jetzt bin ich aber enttäuscht.
Wie kodierst du denn sonst einen Select ?
Ich mach das immer so:
dim Cmd as new ADODB.Command
dim Rcd as ADODB.Recordset
Cmd.Commandtext = "Select ..."
set xCmd.ActiveConnection = cnn
set Rcd = Cmd.Execute
-
ok, ein Mißverständnis von mir. Ich war immer noch in Gedanken bei der Übergabe von AS400 Befehlen mit VBA an die AS400. Danke, das hab ich jetzt verstanden.
Hintergrund ist, daß ich in dotnet mit Controls (GridViews etc.) arbeite und mit SQLDataSources und DataSets mir Verbindung und Daten von der AS400 hole. Verarbeitung und Zusammenstellung findet auf der A400 statt, ich ziehe mir nur die Daten von PF-Files. Auf dem Gebiet der AS400 muss ich noch viel lernen, aber der Nebel lichtet sich immer mehr...
Tausend Dank für Deine kompetenten Hilfen und den schnellen Antworten.
-
Warum machst du dann mit VBA weiter, wenn du doch mit .NET viel besser umgehen kannst ?
Wenn es um Office geht, lade einfach die Office-Erweiterungen zum VisualStudio dazu und schon kannst du auf VBA verzichten.
Similar Threads
-
By Souljumper in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 13-05-09, 19:50
-
By Souljumper in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 13-11-06, 12:34
-
By hs in forum IBM i Hauptforum
Antworten: 15
Letzter Beitrag: 07-11-06, 19:28
-
By stephanr1 in forum NEWSboard Drucker
Antworten: 7
Letzter Beitrag: 20-07-06, 14:00
-
By NixWisserin in forum NEWSboard Server Job
Antworten: 0
Letzter Beitrag: 15-02-05, 17:51
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks