[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2006
    Beiträge
    2.114

    Query und CPYTOSTMF

    Hallo *all,
    ich habe hier mit Query eine Datenbankdatei erstellt die ich gerne in ein Streamfile kopieren möchte.

    Wenn ich den Befehl absetze
    PHP-Code:
                       In Datenstromdatei kopieren (CPYTOSTMF)                    
                                                                                  
    uswahl eingeben und Eingabetaste drücken.                                     
                                                                                  
    usgangsteildoSicherungsd.   > '/qsys.lib/xxx.lib/kndrptdat.file/kndrptd
    .mbr'                                                                         
    ieldatenstromdatei  . . . . . . > '/home/xxx/kndrptdat.txt'            
                                                                                  
    atenstromdateiauswahl . . . . .   *NONE         *NONE, *ADD, *REPLACE         
    atenumsetzungsangaben 
    . . . . .   *AUTO         *AUTO, *TBL, *NONE            
    atenbankdatei
    -CCSID . . . . . . > *FILE         1-65533, *FILE                
    odepage der Datenstromdatei 
    . . > *PCASCII      1-32767, *STMF, *PCASCII... 
    Kommt er mir mit der Fehlermeldung

    PHP-Code:
    Nachricht . . . :   Objekt ist entweder keine Datei oder eine Datei mit       
      Attributen
    , die von diesem Befehl nicht unterstützt werden.                 
    Ursache  . . . . :  Das Objekt                                                
      
    /qsys.lib/xxx.lib/kndrptdat.file/kndrptdat.mbr muss entweder eine        
      physische Quellendatei mit drei Feldern oder eine programmbeschriebene Datei
      sein
    Extern beschriebene Dateien und physische Quellendateien, die weniger 
      oder mehr als drei Felder enthalten
    werden von diesem Befehl nicht         
      unterstützt
    .                                                                
    Fehlerbeseitigung:  Entweder den Namen einer vorhandenen physischen           
      Quellendatei mit den richtigen Attributen oder eine programmbeschriebene    
      Datei angeben und den Befehl wiederholen

    Muß ich wirklich dann immer noch die Daten in eine neu zu erstellende phy-datei kopieren oder gibt es da einen anderen Weg?

    GG

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    CPYxxSTMF unterstützt leider keine PF's mit einer CCSID ungleich *HEX (65535).
    Query erstellt neue Dateien immer mit einer CCSID aus der Quelle, und SQL-Tables haben sowieso immer eine CCSID.

    Dafür gibts dann die CPYxxxIMPF!
    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

  3. #3
    Registriert seit
    Aug 2006
    Beiträge
    2.114
    Hallo *all

    Ich habe die Daten ja mit Query erstellt (auch spaßeshalber mal mit qmqry) ich habe aber immer das Problem das ich Müll bekomme.

    Im Query sieht es so aus

    PHP-Code:
    KTO      KNDTYP  KNDGRP  T1  KNAM             T2  NAM1                                T3  NAM2                  
    Ident                        Kurzbezeichnung      Nam 1
    /                                  Nam 2/                
    nummer                                            P-Ans.                                  P-Ans.                
     
    1.011    ;X;      1     ;   Karl Abt         ;   Carl Abt KG                         ;   Eisenwaren Großhandel 
    Nach dem copy
    PHP-Code:
     ===> CPYTOIMPF FROMFILE(xxx/KNDRPTTOSTMF('/home/xxx/kndrpt2'STMFC
    ODPAG
    (*PCASCIIRCDDLM(*CRLF
    so

    PHP-Code:
    1011      ,"^ç^","ñ","^","Karl Abt       ","^","Carl Abt KG 
    Wo liegt da mein Fehler?

  4. #4
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Der CPYTOIMPF nimmt dir das mit den Trennzeichen (im Unterschied zum CPYTOSTMF) ab.
    Somit mußt du die nicht mühsam in die Query einbauen.
    Gib auch mal den Parameter MBROPT(*REPLACE) mit an.
    Lösche mal die erstellte Datenstromdatei und probiers nochmal.

    Ein Problem sind auch selbstdefinierte Textfelder in der Query. Diese werden meistens als Felder mit CCSID 65535 in der Ausgabedatei erstellt und vom CPYTOIMPF dann nicht von EBCDIC in ASCII umgesetzt.

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Als Zielccsid solltest du die 1252 wählen, PCASCII entspricht Codepage 850.
    Was steht denn tatsächlich in der PF?
    Du scheinst da doch mehrere Felder zu haben.

    Aber wie mein Vorredner schon sagt, gib per Query Einzelfelder aus, der CPYFRMIMPF übergibt dann das CSV-Format.

    Solltest du HEX-Felder haben, kannst du auch z.B. FROMCCSID(273) angeben.
    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

  6. #6
    Registriert seit
    Aug 2006
    Beiträge
    2.114
    Ich bin ja immer noch beim Thema des Kopierens.
    Warum das in Excel problemfrei funktioniert und mit AS/400 Bordmittel nicht bleibt mir ein Rätsel.

    Ich erstelle ja ein View
    PHP-Code:
    CREATE VIEW KNDRPT AS SELECT DISTINCT T01.ADKTO'X' AS KNDTYP,
      
    '1' AS KNDGRPT01.ADKNAM,  T01.ADNAM1,                        
      
    T01.ADNAM2T01.ADSTRT01.ADPLZ,                              
      
    T01.ADORTT01.ADKOPET01.ADSA04 
    Sprich ich habe Datenbankfelder und fixe Texte die ich in der View hinzufüge.

    die am Bildschirm dann ja so aussieht.
    PHP-Code:
    KTO     KNDTYP  KNDGRP  KNAM             NAM1                                NAM2                                STR             
    Ident                   Kurzbezeichnung  Nam 1
    /                              Nam 2/                              Strasse/P-Ans.  
    nummer                                   P-Ans.                              P-Ans.                                              
      
    1011    X       1     Karl Abt         Carl Abt KG                         Eisenwaren Großhandel               Postfach 11 30  
      1017    X       1     Attinger
    's       Joh.Gg.Attinger's Nachfolger GmbH                                       Piechlerstr18 
    und mache dann ein
    PHP-Code:
                          In Importdatei kopieren (CPYTOIMPF)                      
                                                                                   
    Auswahl eingeben und Eingabetaste drücken.                                     
                                                                                   
    Ausgangsdatei:                                                                 
      
    Datei  . . . . . . . . . . . . > KNDRPT        Name                          
        Bibliothek 
    . . . . . . . . . >   yyy       Name, *LIBL, *CURLIB          
      Teildatei  
    . . . . . . . . . .   *FIRST        Name, *FIRST, *ALL            
    Nach Datenbankdatei
    :                                                           
      
    Datei  . . . . . . . . . . . .                 Name                          
        Bibliothek 
    . . . . . . . . .     *LIBL       Name, *LIBL, *CURLIB          
      Teildatei  
    . . . . . . . . . .   *FIRST        Name, *FIRST, *FROMMBR, *ALL  
    Zieldatenstromdatei  
    . . . . . . > '/home/xxx/knd2.txt'                 
                                                                                   
    Sätze ersetzen odhinzufügen  .   *ADD          *ADD, *REPLACE                
    Ausgangs
    -CCSID . . . . . . . . .   *FILE         1-65533, *FILE                
    Codepage der Datenstromdatei 
    . . > 1252          1-32767, *STMF, *PCASCII...   
    Satzbegrenzer  . . . . . . . . . > *CRLF         Zeichenwert, *EOR, *CRLF...   
    Satzformat der Importdatei . . .   *DLM          *DLM, *FIXED 
    Das Ergebnis ist dann auf dem PC

    PHP-Code:
    1011      ,"ç","ñ","Karl Abt       ","Carl Abt KG                       ","Eisenwaren Großhandel 
    Sprich die fixen Felder sind schon mal kaputt.

    Wie müßte ich die dann anlegen um das X und die 1 sauber zubekommen?

    Für Hinweise dankbar
    GG

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Dies liegt in deiner Arbeitsumgebung begründet.
    Hat dein Job CCSID 65535 (*HEX) werden die Konstanten wohl auch als HEX definiert.
    Der CPYxxxIMPF macht dann keine Codewandlung, die Felder sind ja binär.

    Du musst den Konstanten eine CCSID verpassen:
    cast('X' as char(1) ccsid 273) as Name
    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

Similar Threads

  1. QueryManager / Query ---> Aufruf mit Variablen
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 29-11-06, 18:07
  2. query outq
    By TARASIK in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 22-08-06, 09:52
  3. Query Manager -_-
    By Azubiiiiii in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 03-08-06, 09:44
  4. Query - Tagesdatum
    By dino in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 09-05-06, 07:45
  5. Query und Datum
    By Hubert Brethauer in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 05-05-06, 12:37

Berechtigungen

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