[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    May 2004
    Beiträge
    184
    Hallo prsbrc,

    wie Du siehst arbeite ich aber doch mit Commitment Control:

    PHP-Code:
    Auswahl eingeben und Eingabetaste drücken.     
                                                   
    COMMIT-Steuerung . . . . . . . . > *CS         
    Namenskonvention 
    . . . . . . . .   *SYS        
    Anweisungsverarbeitung 
    . . . . .   *RUN        
    Bibliotheksauswahl 
    . . . . . . .   *LIBL       
    Listenart  
    . . . . . . . . . . .   *ALL        
    Datenaktualisierung  
    . . . . . .   *ALWAYS     
    Datenkopie zulässig  
    . . . . . .   *YES        
    Datumsformat 
    . . . . . . . . . .   *JOB        
    Trennzeichen für Datum 
    . . . . .   *JOB        
    Zeitformat 
    . . . . . . . . . . .   *HMS        
    Trennzeichen für Uhrzeit 
    . . . .   *JOB        
    Dezimalzeichen 
    . . . . . . . . .   *JOB        
    Sortierfolge 
    . . . . . . . . . .   *JOB        
      Bibliothek 
    . . . . . . . . . .               
    Sprachen-ID  . . . . . . . . . .   *JOB 
    Gruß
    Jenne

  2. #2
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Hallo Jenne,

    Die Fehlermeldung und der SQLSTT sagen aber etwas anderes:
    Code:
    Das externe Programm oder Serviceprogramm hat SQLSTATE 42926        
      zurückgegeben. Die vom Programm zurückgegebene Textnachricht ist: LOB- und 
      XML-Lokatoren sind mit COMMIT(*NONE) nicht zulässig.

  3. #3
    Registriert seit
    May 2004
    Beiträge
    184
    Hallo andreaspr,

    habe jetzt einmal in der SQL Sitzung F13 getätigt mit folgendem Ergebnis:

    PHP-Code:
                               Sitzungsattribute ändern
                                                       
    Auswahl eingeben und Eingabetaste drücken
    .         
                                                       
      
    Anweisungsverarbeitung . . . .   *RUN           *
      
    SELECT-Ausgabe . . . . . . . .   1              1
                                                      3
      COMMIT
    -Steuerung . . . . . . .   *CS            *
                                                      *
      
    Datumsformat . . . . . . . . .   *DMY           *
                                                      *
      
    Datumstrennzeichen . . . . . .   '.'            *
                                                      
    '
      Zeitformat . . . . . . . . . .   *HMS           *
                                                      *
      Zeittrennzeichen . . . . . . .   '
    :'            *
                                                      '
      
    Datenaktualisierung  . . . . .   *ALWAYS        *
      
    Datenkopie zulässig  . . . . .   *YES           *
      
    Namenskonvention . . . . . . .   *SYS           
    Und da steht doch Commit-Steuerung *CS

    Gruß
    Jenne

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Besser du benutzt die "LOB File Reference Variable" aus dem SQL-Programmierhandbuch.
    Hier ein Beispiel dazu zum Schreiben der Info ins IFS.
    Umgedreht funktioniert dies auch zum Kopieren aus dem IFS:
    http://newsolutions.de/forum-systemi...C3%BCbertragen
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Also wenn du im STRSQL *CS angelegt hast, dann sollte es im STRSQL auch funktionieren.
    Allerdings NUR im STRSQL. Im PGM wird NICHT die Commit Einstellung vom STRSQL verwendet! Dort musst du es entweder beim Kompilieren oder wie oben gezeigt im Programm zur Laufzeit gesetzt werden.

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Und die Frage ist, ob du die SQL-Option (beim Umwandeln oder per set Option commit=*cs auch im Programm definiert hast.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Versuch' doch mal die Commitment-Steuerung mit Commitment Scope *JOB (anstatt *ACTGRP) zu starten. Was passiert dann?

    Wenn Du überigens mit embedded SQL arbeitest, würde ich die Funktion GET_BLOB_FROM_FILE erst gar nicht verwenden, sondern eine File-Referenz-Variable definierten (SYSTYPE(BLOB_FILE).
    Die Datenstruktur-Unterfelder entsprechend versorgen und dann die BLOB_FILE direkt im Insert-Statement anlegen.

    Dann brauchst Du auch keine Rücksicht ob und wie die Commitment Steuerung gestartet ist zu nehemen.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  8. #8
    Registriert seit
    May 2004
    Beiträge
    184
    Ich habe jetzt im STRSQL mit PF13 den Eintrag Commit auf *all gesetzt und danach hat der Insert geklappt. Kleiner Tipp für Unerfahrene, danach "COMMIT" eingeben damit die Änderung auch angenommen wird.

    Eine Frage habe ich noch. Wenn ich mir jetzt die Datei ansehe, steht dort nur "Pointer".
    Wie kann ich überprüfen, ob die Bilder korrekt in der Tabelle sind?

    Herzlichen Dank an alle
    Jenne

  9. #9
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    STRSQL is wie so vieles "stabilized", und wird seit Release V4R5 nicht mehr weiter entwickelt.
    Wenn Du die Abfrage mit dem IBM i Navigator ausführst, siehst Du die Hex-Werte in der Spalte. (BLOB wird ansonsten nicht umgesetzt!)

    ... um COMMIT *ALL zu setzen und verwenden, muss man schon sehr genau wissen was man tut, da man ALLES sperrt! COMMIT *CHG oder *CS reichen eigentlich immer aus.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  10. #10
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    festzustellen, ob alles 'ordentlich' drin ist,
    indem du es wieder ausliest und in ein PDF speicherst.


    --> schon 36 Teilnehmer an der Umfrage!
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  11. #11
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    hier mal ein Uralt Bsp. aus dem Netz, das wir damals für die ersten Tests verwendet haben
    Code:
    D SQL_FILE_READ...                                           
    D                 C                   CONST(2)               
    D SQL_FILE_CREATE...                                         
    D                 C                   CONST(8)               
    D SQL_FILE_OVERWRITE...                                      
    D                 C                   CONST(16)              
    D SQL_FILE_APPEND...                                         
    D                 C                   CONST(32)              
                                                                 
    D ITEM            S              5P 0                        
    D PIC             S                   SQLTYPE(BLOB_FILE)     
    D OUT             S                   SQLTYPE(BLOB_FILE)     
                                                                 
    C/EXEC SQL   SET OPTION NAMING=*SYS,                         
    C+                      COMMIT=*NONE                         
    C/END-EXEC                                                   
     *                                                           
     *********************************************************** 
     * CREATE A FILE WITH A BLOB COLUMN                          
     ***********************************************************
    C/EXEC SQL   DROP TABLE ITEMPIC                             
    C/END-EXEC                                                  
     *                                                          
     ***********************************************************
     * CREATE A FILE WITH A BLOB COLUMN                         
     ***********************************************************
    C/EXEC SQL                                                  
    C+  CREATE TABLE ITEMPIC                                    
    C+            (ITEMNO DEC(5 , 0) NOT NULL,                  
    C+              PICTURE BLOB(8M) WITH DEFAULT NULL,         
    C+              PRIMARY KEY( ITEMNO )                       
    C+            )                                             
    C/END-EXEC                                                  
     *                                                          
     ***********************************************************
     *  WRITE AN ITEM TO THE FILE                               
     *                                                          
     *        PIC_FO = FILE OPTIONS (SEE SQL CONSTANTS, ABOVE)  
     *      PIC_NAME = FILE NAME TO SET BLOB TO                 
     *        PIC_NL = LENGTH OF FILE NAME                                                   
     *                                                                                       
     *  TEST.JPG WILL BE WRITTEN TO THE 2ND COLUMN OF THE FILE                               
     ***********************************************************                             
    C                   EVAL      ITEM     = 10001                                           
    C                   EVAL      PIC_FO   = SQL_FILE_READ                                   
    C                   EVAL      PIC_NAME = '/TMP/TEST.BMP'                   MIT BMP !!!!! 
    C                   EVAL      PIC_NL   = %LEN(%TRIMR(PIC_NAME))                          
     *                                                                                       
    C/EXEC SQL   INSERT INTO ITEMPIC VALUES (:ITEM,:PIC)                                     
    C/END-EXEC                                                                               
    C                   EVAL      ITEM     = 10002                                           
    C                   EVAL      PIC_FO   = SQL_FILE_READ                                   
    C                   EVAL      PIC_NAME = '/TMP/TEST.PDF'                   MIT PDF !!!!  
    C                   EVAL      PIC_NL   = %LEN(%TRIMR(PIC_NAME))                          
     *                                                                                       
    C/EXEC SQL   INSERT INTO ITEMPIC VALUES (:ITEM,:PIC)                                     
    C/END-EXEC                                                                               
     *                                                                                       
     ***********************************************************                             
     *   READ A RECORD                                               
     *                                                               
     *                                                               
     *       OUT_FO = FILE OPTIONS (CREATE FILE OR OVERWRITE IT)     
     ***********************************************************     
    C                   EVAL      ITEM     = 10001                   
    C                   EVAL      OUT_FO = SQL_FILE_OVERWRITE        
    C                   EVAL      OUT_NAME = '/TMP/TESTOUT.BMP'      
    C                   EVAL      OUT_NL   = %LEN(%TRIMR(OUT_NAME))  
                                                                     
    C/EXEC SQL   SELECT PICTURE                                      
    C+             INTO :OUT                                         
    C+             FROM ITEMPIC                                      
    C+             WHERE ITEMNO = :ITEM                              
    C/END-EXEC                                                       
    C                   EVAL      ITEM     = 10002                   
    C                   EVAL      OUT_FO = SQL_FILE_OVERWRITE        
    C                   EVAL      OUT_NAME = '/TMP/TESTOUT.PDF'      
    C                   EVAL      OUT_NL   = %LEN(%TRIMR(OUT_NAME))  
                                                                     
    C/EXEC SQL   SELECT PICTURE                   
    C+             INTO :OUT                      
    C+             FROM ITEMPIC                   
    C+             WHERE ITEMNO = :ITEM           
    C/END-EXEC                                    
                                                  
    C                   EVAL      *INLR   = *ON  
        
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  12. #12
    Registriert seit
    Apr 2015
    Beiträge
    5
    wie Du siehst arbeite ich aber doch mit Commitment Control








    sony e1 handytasche

Similar Threads

  1. Dateien im TIFF-Format in OnDemand importieren
    By MB in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 06-06-03, 22:14
  2. Blob-Handling
    By infomio in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 28-03-03, 16:46
  3. Grafik von PC auf AS400 (als PAGSEG oder GDF)
    By elmar in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 20-02-02, 07:30
  4. GUI/Grafik
    By Woerlein in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 04-07-01, 23:16
  5. Bilder vom PC ins AS400 importieren
    By go-dany-go in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 25-04-01, 14:52

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •