- 
	
	
		
		
		
				
					
					
				
				
		
			
				
					... vielleicht ein paar Hinweise zur Vorgehensweise: 
- Schritt 1: Aufruf QCMDEXC mit einfachem OS Command (SNDMSG oder CRTLIB) 
wenn das funzt: 
- Schritt 2: Aufruf QCMDEXC mit STRQMQRY ohne Parameter 
wenn das funzt: 
- Schritt 3: Aufurf QMQRY über QCMDEXC an OS/400 prompt 
wenn das funzt: 
Schritt 4: das was bei dir Schritt 1 war. 
 
Ansonsten: sich mal mit external stored Procedures befassen; man kann jedes OS/400 Programm als stored Procedure registrieren und dann über SQL Call aufrufen, das Parameter mapping übernimmt dann SQL und man kann auch Infos zurück bekommen. 
 
Die Parameter Mimik des QM Query kriegt man in diesem Fall kontrollierbarer hin, wenn man eine Parameterdatei (1 Satz mit einem Feld pro Parameter) mit hinzu joined, diese aus dem Programm über ADO füllt und dan den QMQuery aufruft. (Diese Technik empfiehlt sich auch für Stafetten von Queries, die monatlich aufgerufen werden. 
 
D*B 
 
	
		
			
			
				
					  Zitat von  padawan
					 
				 
				Hallo, 
  
die Variable CallCmd hat genau den String, den ich auf der AS400 ausführen möchte. Ich weiß bald nicht mehr, welche Variation ich noch probieren soll. 
  
Die Variable VAR1 übergibt einen Wert für ein Datumsfeld auf der AS400, welches das Format Decimal(6,0) fordert. 
  
Gruss 
Tobias 
			
		 
	 
 
				 
			 
			
		 
			
				
			
				
			
			
				
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					Hallo, 
in der Variablen steht folgendes: 
  
CALL QSYS.QCMDEXC('STRQMQRY QMQRY(TRUMPFH/TTRWLSVST1) OUTPUT(*OUTFILE) OUTFILE(TRUMPFH/TTRWLSVST1) ALWQRYDFN(*YES) SETVAR((VAR1 100724))', 0000000117,00000) 
  
1:1 den Befehl auf AS400 ausgeführt mit folgenden Fehlern: 
  
Zeichen ',' nach Zeichenfolge ''STRQMQRY ' ist ungültig. 
  
Ich habe das Kommo entfernt, dann: 
  
 CALL QSYS.QCMDEXC('STRQMQRY QMQRY(TRUMPFH/TTRWLSVST1) OUTPUT(*OUTFILE)     
      OUTFILE(TRUMPFH/TTRWLSVST1) ALWQRYDFN(*YES) SETVAR((VAR1 100724))' 0000000 
117,00000)  
  
Schlüsselwort QSYS.QCMDE für diesen Befehl ungültig. 
  
Ich habe QSYS. entfernt, dann: 
  
 CALL QCMDEXC('STRQMQRY QMQRY(TRUMPFH/TTRWLSVST1) OUTPUT(*OUTFILE)          
 OUTFILE(TRUMPFH/TTRWLSVST1) ALWQRYDFN(*YES) SETVAR((VAR1 100724))' 0000000117,0 
0000)   
  
Schlüsselwort QCMDEXC für diesen Befehl ungültig 
Fehler in Befehl CALL gefunden.                  
  
Ich werde wahnsinnig... 
  
Gruss 
Tobias
				 
			 
			
		 
			
				
			
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					Übe dich in Geduld junger Padawan   
 
Diesen Befehl kannst du so nur im STRSQL ausführen, da es sich um eine SQL-Syntax handelt: 
	Code: 
	CALL QSYS.QCMDEXC('STRQMQRY QMQRY(TRUMPFH/TTRWLSVST1) OUTPUT(*OUTFILE) OUTFILE(TRUMPFH/TTRWLSVST1) ALWQRYDFN(*YES) SETVAR((VAR1 100724))', 0000000117,00000)
 
Probiere es dort nocheinmal. 
 
Wenn du es auf der Command-Line ausfürhen willst muss das ganze so aufgebaut sein: 
	Code: 
	 ===> CALL PGM(QSYS/QCMDEXC) PARM('SNDMSG MSG(TEST) TOUSR(PRAN)' 0000000028.00000)
 
				 
			 
			
		 
			
				
			
			
				
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					Ggf. ist die Dezimalpunkt-Einstellung der Verbindungsfolge nicht korrekt. 
Formatiere die Längeneingabe mal mit einem Punkt: replace(format(...), ",", "."). 
  
Wenn du den Inhalt des auszuführenden SQL's auf der AS/400 ausprobieren willst, dann rufe STRSQL auf, ändere per F13->Auswahl 1 die Namenskonvention auf *SQL. 
Wenn  nicht, musst du den call QSYS.QCMDEXC auf call QSYS/QCMDEXC anpassen.
				 
			 
			
		 
			
				
			
			
				
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					Hallo, 
erster Erfolg: 
folgender Befehl auf der AS400 funktioniert jetzt: 
  
CALL PGM(QSYS/QCMDEXC) PARM('STRQMQRY QMQRY(TRUMPFH/TTRWLSVST1) OUTPUT(*OUTFILE) OUTFILE(TRUMPFH/TTRWLSVST1) ALWQRYDFN(*YES) SETVAR((VAR1 100724))' 0000000117.00000) 
  
aber, 
  
der Befehl über ADO bringt einen Fehler: 
  
CallCmd2 = "CALL PGM(QSYS/QCMDEXC) PARM('" & CallCmd & "', " & Replace(Format(Len(CallCmd), "0000000000.00000"), ",", ".") & ")" 
[IBM][iSeries Access ODBC-Treiber][DB2 UDB]SQL0104 - Token QSYS ungültig. Gültige Token: :.  
  
auch die Korrektur auf: 
...PGM(QSYS.QCMDEXC)... 
bringt den selben Fehler 
  
Was kann ich da machen? 
  
Danke 
Gruss 
Tobias
				 
			 
			
		 
			
				
			
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					So, nach einigem probieren habe ich den Grund gefunden: 
  
STRQMQRY läßt sich nicht aus einer SQL-Procedure aufrufen. 
  
Begründung: 
Beim Starten des QMQRY versucht dieser, eine eigene Verbindung zur DB mittels Connect herzustellen. 
Da aber bereits durch den ODBC-Zugriff eine Verbindung besteht, wird dieser Connect mit SQL-Fehler 0752 abgewiesen: 
  
Nachrichten-ID . . . . :   SQL0752       Bewertung  . . . . . . :   30         
Nachrichtenart . . . . :   Diagnose                                            
Sendedatum . . . . . . :   28.07.10      Sendezeit  . . . . . . :   11:32:58   
                                                                               
Nachricht . . . :   Verbindung kann nicht geändert werden. Ursachencode 4.     
Ursache  . . . . :  Verbindung kann nicht hergestellt werden, da sich der      
  Anwendungsprozeß in einem Status befindet, in dem keine Verbindungen         
  zulässig sind. Der Ursachencode ist 4. Ursachencodes und ihre Bedeutung:     
    1 -- SQL befindet sich nicht in einem Status, in dem Verbindungen zulässig 
  sind. Dieser Status wird für SQL nach einer COMMIT- oder ROLLBACK-Anweisung  
  aktiviert. Der Status wird für SQL verlassen, wenn eine andere SQL-Anweisung 
  als COMMIT, ROLLBACK oder CONNECT ausgeführt wird.                           
    2 -- Es stehen Änderungen an oder es sind offene Dateien unter             
  COMMIT-Steuerung im aktuellen Server vorhanden und die in der Anforderung    
  CONNECT angegebene relationale Datenbank (RDB) ist nicht der aktuelle        
  Server.                                                                      
    3 -- Es wird eine Anforderung zum Erstellen eines SQL-Pakets verarbeitet    
  und das Programm befindet sich nicht an einer COMMIT-Grenze.                  
    4 -- Verbindung ist durch einen anderen Aufruf des interaktiven SQL         
  gesperrt, oder interaktives SQL und DB2 UDB für iSeries haben                 
  unterschiedlichen Stand.                                                      
    5 -- Verbindung kann wegen Einschränkungen für ferne Verbindungen und       
  wegen der COMMIT-Definition auf Jobebene nicht geändert werden.               
    6 -- Verbindung kann wegen einer Anweisung SET TRANSACTION nicht zu einem   
  fernen System hergestellt werden.                                             
    7 -- Verbindung kann nicht mit Verbindungsverwaltungsmethode *RUW geändert  
  werden, da eine vorherige Verbindung geschützt ist.                           
    8 -- CONNECT RESET kann keine lokale Verbindung zu RDB *N starten, da die   
  RDB für die ASP-Gruppe des Thread *N ist.                                     
  
  
Ich habe auch schon mal in deinem anderen Beitrag gefragt, warum du den in dem Query enthaltenen SQL nicht direct selber ausführst und mit dem Recordset dann arbeitest.
				 
			 
			
		 
			
				
			
			
				
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					Hallo, 
erster Erfolg: 
folgender Befehl auf der AS400 funktioniert jetzt: 
  
CALL PGM(QSYS/QCMDEXC) PARM('STRQMQRY QMQRY(TRUMPFH/TTRWLSVST1) OUTPUT(*OUTFILE) OUTFILE(TRUMPFH/TTRWLSVST1) ALWQRYDFN(*YES) SETVAR((VAR1 100724))' 0000000117.00000) 
  
aber, 
  
der Befehl über ADO bringt einen Fehler: 
  
CallCmd2 = "CALL PGM(QSYS/QCMDEXC) PARM('" & CallCmd & "', " & Replace(Format(Len(CallCmd), "0000000000.00000"), ",", ".") & ")" 
[IBM][iSeries Access ODBC-Treiber][DB2 UDB]SQL0104 - Token QSYS ungültig. Gültige Token: :.  
 
auch die Korrektur auf: 
...PGM(QSYS.QCMDEXC)... 
bringt den selben Fehler 
  
Was kann ich da machen? 
  
Danke 
Gruss 
Tobias
				 
			 
			
		 
			
				
			
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					Siehe meine vorherige Antwort. 
STRQMQRY geht nicht über SQL. 
Du musst dir eine andere Lösung einfallen lassen. 
  
Nochmal: 
Führe den enthaltenen SQL doch direkt selber aus.
				 
			 
			
		 
			
				
			
			
				
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					...wäre es denn möglich, ein Programm über ADO auf der AS400 aufzurufen, der dann diesen besagten Befehl auführt. Das wäre doch auch eine Möglichkeit? 
  
Gruss 
Tobias
				 
			 
			
		 
			
				
			
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
					
				
		
			
				
					Ja, das ginge. 
Allerdings muss das ein CLLE/RPGLE-Programm mit einer eigenen Aktivierungsgruppe sein damit ein eigener Connect zu der DB erfolgen kann. Allerdings weiß ich nicht, in welcher Aktivierungsgruppe STRQMQRY ausgeführt wird. Wenn es *CALLER ist hast du gewonnen ansonsten verloren. 
Alternativ könntest du einen SBMJOB in dem CLP machen und auf das Ende des Job's (JOBAPI) warten. Das wird dann richtig kompliziert. 
  
Aber warum sträubst du dich dagegen, den Select selber zu verarbeiten und machst es so kompliziert ?
				 
			 
			
		 
			
				
			
			
				
			
			
		 
	 
	
	 
 
		 
		
		
	
 
	
	
 
	
	
	
	
	
	
		Similar Threads
		
			
			
- 
  
    
    
       By Asti in forum IBM i Hauptforum
     
   
  
    Antworten: 2
       
        Letzter Beitrag: 26-10-06, 10:39
       
   
 
- 
  
    
    
       By Asti in forum IBM i Hauptforum
     
   
  
    Antworten: 3
       
        Letzter Beitrag: 29-08-06, 14:24
       
   
 
- 
  
    
    
       By TARASIK in forum IBM i Hauptforum
     
   
  
    Antworten: 3
       
        Letzter Beitrag: 27-06-06, 14:32
       
   
 
- 
  
    
    
       By cseitz in forum IBM i Hauptforum
     
   
  
    Antworten: 0
       
        Letzter Beitrag: 20-06-06, 15:40
       
   
 
- 
  
    
    
       By woki in forum NEWSboard Java
     
   
  
    Antworten: 3
       
        Letzter Beitrag: 06-06-06, 16:57
       
   
 
			 
		 
	 
	
	
	
	
	
		
		
		
		
			
				 
				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