-
DSPFFD
Hallo, betrifft V5R4
dieses u.g. CL funktioniert, wenn ich die Parameter in der Befehlszeile eingebe:
CALL SCHMIDT/TTRFDC (xxx yyy)
PGM PARM(&DATEI &LIBR)
DCL VAR(&DATEI) TYPE(*CHAR) LEN(10)
DCL VAR(&LIBR) TYPE(*CHAR) LEN(10)
DSPFFD FILE(&LIBR/&DATEI) OUTPUT(*OUTFILE) +
OUTFILE(SCHMIDT/FFD)
OVRDBF FILE(QADSPFFD) TOFILE(SCHMIDT/FFD)
RUNQRY QRY(SCHMIDT/SCHFDTTR)
ENDPGM
Wenn ich das Programm über ADO starte, scheint es als ob die Parameter nicht mitgeben werden:
Dim datei, libr, VAR1 As String
datei = txt_datei.Text
libr = txt_bibl.Text
Dim cnn As ADODB.Connection
Dim con_str As String
Dim CallCmd As New ADODB.Command
cnn = New ADODB.Connection
VAR1 = "CALL SCHMIDT.SCHFDC (" & datei & ", " & libr & ")"
adocon.con_open()
CallCmd = New ADODB.Command
OnErrorResumeNext
CallCmd.CommandText = VAR1
CallCmd.ActiveConnection = adocon.cnn
CallCmd.Execute(adocon.cnn)
adocon.con_close()
Was mach ich falsch?
Danke.
Gruss
Tobias
-
select * from QSYS2.syscolumns
wäre eh besser
D*B
 Zitat von padawan
Hallo, betrifft V5R4
dieses u.g. CL funktioniert, wenn ich die Parameter in der Befehlszeile eingebe:
CALL SCHMIDT/TTRFDC (xxx yyy)
PGM PARM(&DATEI &LIBR)
DCL VAR(&DATEI) TYPE(*CHAR) LEN(10)
DCL VAR(&LIBR) TYPE(*CHAR) LEN(10)
DSPFFD FILE(&LIBR/&DATEI) OUTPUT(*OUTFILE) +
OUTFILE(SCHMIDT/FFD)
OVRDBF FILE(QADSPFFD) TOFILE(SCHMIDT/FFD)
RUNQRY QRY(SCHMIDT/SCHFDTTR)
ENDPGM
Wenn ich das Programm über ADO starte, scheint es als ob die Parameter nicht mitgeben werden:
Dim datei, libr, VAR1 As String
datei = txt_datei.Text
libr = txt_bibl.Text
Dim cnn As ADODB.Connection
Dim con_str As String
Dim CallCmd As New ADODB.Command
cnn = New ADODB.Connection
VAR1 = "CALL SCHMIDT.SCHFDC (" & datei & ", " & libr & ")"
adocon.con_open()
CallCmd = New ADODB.Command
OnErrorResumeNext
CallCmd.CommandText = VAR1
CallCmd.ActiveConnection = adocon.cnn
CallCmd.Execute(adocon.cnn)
adocon.con_close()
Was mach ich falsch?
Danke.
Gruss
Tobias
-
Da dein Programm 10-stellige Werte benötigt musst du auch 10-stellige Werte übergeben.
Datei = Left(Datei & Space(10), 10)
Der Unterschied zwischen CALL-CMD und SQL-CALL ist der, dass das CALL-CMD bei manueller Eingabe Zeichenketten, die kürzer als 32 sind auf 32 Stellen verlängert.
Deinem CLP kann das egal sein, da eh nur Adressen übergeben werden.
Bei SQL-Call werden Parameter genau in der angegebenen Länge übergeben.
Wenn du aber 10 Stellen erwartest, steht halt Schrott drin.
Zu Sicherheit solltest du die Paramter auch noch mit UCASE(Datei) in Grußbuchstaben wandeln, denn auch diese Konvertierung macht das CALL-CMD bei fehlenden Hochkommata.
-
...ich übergebe Wert in den Variablen:
Wert libr --> SCHMIDT
Wert datei --> GSAR00
datei = UCase(Left(txt_datei.Text & Space(10), 10))
libr = UCase(Left(txt_libr.Text & Space(10), 10))
Keine Änderung.
Das was ich in der Befehlszeile über Call erfolgreich auf der AS400 ausführe, diesen Call möchte ich über Visual Basic an die AS400 übergeben. Da ich das schon paarmal ausgeführt habe, gehe ich davon aus, daß die Parameterübergabe funktionieren sollte, aber der Teufel steckt bestimmt wieder im Detail.
Bin ratlos.
Gruss
Tobias
-
Auch hier gilt mal wieder:
Welche Fehlermeldung bekommst du bei Ausführung ?
-
...komischerweise gar keine. Wie gesagt, wenn ich den Call über die AS400 absetze wird das CL ausgeführt. Beim Absetzen des Calls über ADO wird das CL auf der AS400 nicht ausgeführt - es kommt aber auch keine Fehlermeldung bei ADO.
-
Dann denke ich eher, dass der CALL erfolgreich ist, aber dein CLP nichts macht.
Baue mal in dein CLP ein DSPJOBLOG ein und ggf. einen CHGJOB LOGCLPGM(*YES).
-
den Joblog bekomme ich nur, wenn ich den Call-Befehl auf der AS400 ausführe. Über ADO passiert nichts. Das CLP wird nicht ausgeführt. In der Bibliotheks-Suchliste bin ich mit meiner Bibliothek auch drin. Über WRKOBJ habe ich auch die Berechtigungen des CLP geprüft - dort steht Public auf *Change und mein Benutzername auf *ALL.
Ich weiß nicht was ich noch machen kann.
-
evt. noch eine Idee. Bin völlig ratlos.
Danke.
-
Nach dem con_open kannst du auf der AS/400 per WRKOBJLCK User *USRPRF den QZDASOINIT-Job herausfinden, mit dem du verbunden bist.
Anschließend führst du den Execute aus und hältst vor dem con_close an.
Dan schau ins Joblog.
Similar Threads
-
By Tom74 in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 22-12-07, 11:22
-
By emax in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 06-10-06, 11:01
-
By pwrdwnsys in forum NEWSboard Java
Antworten: 18
Letzter Beitrag: 07-09-06, 09:39
-
By flytokiwi in forum IBM i Hauptforum
Antworten: 9
Letzter Beitrag: 13-03-06, 11:22
-
By coolie in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 01-06-04, 20:29
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