-
ADO und SETVAR bei STRQMQRY
Hallo,
V5R4 und ADO
Ich habe wie in diesem Forum beschrieben in der Qry bei Sätze auswählen eine Variable gesetzt --> WVLDAT LE :VAR1 --> dabei hat das Feld WVLDAT das Format Decimal 6 0
Folgender Befehl in der Befehlszeile auf der AS400 funktioniert:
STRQMQRY QMQRY(TRUMPFH/TTRWLSVST1) OUTPUT(*OUTFILE) OUTFILE(TRUMPFH/TTRWLSVST1) ALWQRYDFN(*YES) SETVAR((VAR1 100626))
Jetzt möchte ich diesen Befehl über ADO aufführen. In ADO habe ich folgendes gemacht, wobei STRQMQRY nicht funktioniert:
datbb = "26.06.2010"
t = Left(datbb, 2)
m = Mid(datbb, 4, 2)
j = Right(datbb, 2)
datbb = j & m & t
'datb = "X'0" & datbb & "C'"
VAR1 = datb 'VAR1 ist jetzt 100626
'************************************************* ************
'Daten holen
'************************************************* ************
Dim cnn As ADODB.Connection
Dim con_str AsString
Dim CallCmd AsNew ADODB.Command
cnn = New ADODB.Connection
VAR99 = "STRQMQRY QMQRY(TRUMPFH/TTRWLSVST1) OUTPUT(*OUTFILE) OUTFILE(TRUMPFH/TTRWLSVST1) ALWQRYDFN(*YES) SETVAR((VAR1 " & VAR1 & "))"
'anderer Versuch
'VAR99 = "STRQMQRY QMQRY(TRUMPFH/TTRWLSVST1) OUTPUT(*OUTFILE) OUTFILE(TRUMPFH/TTRWLSVST1) ALWQRYDFN(*YES) SETVAR((VAR1 ('''' *CAT " & VAR1 & " *CAT '''')))"
' oder SETVAR((VAR1 ('''' *CAT &VAR1 *CAT '''')))
con_str = "Driver={iSeries Access ODBC Driver};System=ICHAS;Uid=TRUMPFH;Pwd=tobias;"
cnn.Open(con_str)
CallCmd = New ADODB.Command
OnErrorResumeNext
CallCmd.CommandText = VAR99
CallCmd.ActiveConnection = cnn
CallCmd.Execute(cnn)
cnn.Close()
Irgendwie übergebe ich die Variable bei SETVAR nicht korrekt. Was mache ich falsch?
Vielen Dank.
Gruss
Tobias
-
Etwas grundsätzliches:
Du kannst keine Kommandos aus der AS/400 aufrufen, du musst diese in QCMDEXC verpacken:
call QSYS.QCMDEXC ('MyCmd', Länge als 10VK5NK formatiert)
Man beachte, dass du das Kommando ja in Hochkomma setzen musst, also sind alle enthaltenen Hochkommas zu verdoppeln:
MyCmd = replace(MyCmd, "'", "''")
.execute "call qsys.qcmdexc ('" & mycmd & "', " & format(len(mycmd), "0000000000.00000" ) & ")"
-
Ist VAR1 eine numerische oder alphanumerische Variable? Probier mal den Inhalt von VAR1 nach alphanumerisch umzusetzen und diese alphanumerische Zeichenfolge dann zu übergeben.
-
@Pikachu
Hier wird ein SQL-Aufruf fabriziert.
Ansonsten frage ich mich, warum der im QMQRY enthaltene SQL nicht direkt ausgeführt wird ?
So muss man bei Korrekturen immer 2 Seiten ändern, das QMQRY und das Programm.
Zumal du anscheinend das Ausgabeergebnis dann wieder per Select ausliest.
-
VAR1 übergebe ich alphanumerisch.
-
Schau dir bitte meine Hinweise an.
-
habe das jetzt so umgesetzt, klappt aber noch nicht:
cnn = New ADODB.Connection
con_str = "Driver={iSeries Access ODBC Driver};System=ICHAS;Uid=TRUMPFH;Pwd=tobias;"
cnn.Open(con_str)
'CallCmd = New ADODB.Command
OnErrorResumeNext
CallCmd = "STRQMQRY QMQRY(TRUMPFH/TTRWLSVST1) OUTPUT(*OUTFILE) OUTFILE(TRUMPFH/TTRWLSVST1) ALWQRYDFN(*YES) SETVAR((VAR1 " & VAR1 & "))"
CallCmd = Replace(CallCmd, "'", "''")
cnn.Execute("CALL QSYS.QCMDEXC('" & CallCmd & "', " & Format(Len(CallCmd), "0000000000.00000") & ")")
cnn.Close()
Habe ich hier einen Denkfehler?
Gruss
Tobias
-
Prinzipell nicht, aber die Fehlermeldung (Err-Objekt, Errors-Auflistung der Connection) wäre schon ganz hilfreich.
-
sehr gerne, ich hoffe, daß Dir der ODBC-Treiber-Fehler CPF0006 etwas sagt:
Serverfehler in der Anwendung /IMHO.
[IBM][iSeries Access ODBC-Treiber][DB2 UDB]CPF0006 - Im Befehl ist ein Fehler aufgetreten.
Beschreibung: Unbehandelte Ausnahme beim Ausführen der aktuellen Webanforderung. Überprüfen Sie die Stapelüberwachung, um weitere Informationen über diesen Fehler anzuzeigen und festzustellen, wo der Fehler im Code verursacht wurde.
Ausnahmedetails: System.Runtime.InteropServices.COMException: [IBM][iSeries Access ODBC-Treiber][DB2 UDB]CPF0006 - Im Befehl ist ein Fehler aufgetreten.
Quellfehler:
Zeile 116: CallCmd = Replace(CallCmd, "'", "''")
Zeile 117:
Zeile 118: cnn.Execute("CALL QSYS.QCMDEXC('" & CallCmd & "', " & Format(Len(CallCmd), "0000000000.00000") & ")")
Zeile 119: 'cnn.Execute(CallCmd)
Zeile 120:
Stapelüberwachung:
[COMException (0x80004005): [IBM][iSeries Access ODBC-Treiber][DB2 UDB]CPF0006 - Im Befehl ist ein Fehler aufgetreten.] ADODB.ConnectionClass.Execute(String CommandText, Object& RecordsAffected, Int32 Options) +0 AÜA.btn_aüa_Click(Object sender, EventArgs e) in C:\Dokumente und Einstellungen\trumpfheller\Eigene Dateien\Visual Studio 2008\WebSites\IMHO\AÜA.aspx.vb:118 System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111 System.Web.UI.WebControls.Button.RaisePostBackEven t(String eventArgument) +110 System.Web.UI.WebControls.Button.System.Web.UI.IPo stBackEventHandler.RaisePostBackEvent(String eventArgument) +10 System.Web.UI.Page.RaisePostBackEvent(IPostBackEve ntHandler sourceControl, String eventArgument) +13 System.Web.UI.Page.RaisePostBackEvent(NameValueCol lection postData) +36 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
-
CPF0006 ist ein Syntaxfehler im Kommando.
Nimm also dein Kommando und kopiere es in eine Befehlszeile auf der AS400.
Ist die Zeile zu klein, einfach CALL QCMD aufrufen und F11 drücken.
Ggf. zu viele/zuwenige Hochkommas ?
Similar Threads
-
By Asti in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 26-10-06, 09:39
-
By polo in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 16-10-06, 12:31
-
By Asti in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 29-08-06, 13:24
-
By Elei in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 20-06-06, 13:51
-
By Jenne in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 23-03-05, 09:50
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