[NEWSboard IBMi Forum]
Seite 1 von 4 1 2 ... Letzte
  1. #1
    Registriert seit
    Sep 2003
    Beiträge
    221

    QUERY aktualisieren

    Hallo zusammen,

    durch eine umfangreiche Datenbankänderung müssen wir ca. 2000 Queries aktualiseren.

    Mit der Hand ist das sehr mühsam und auch fast unmüglich. Query aufrufen, Auswahl 2 und dann speichern......

    Gibt es einen Weg (API) oder so, um das maschinell zu machen?

    Danke für jeden schnellen Tipp,

    Peter Kinne
    Peter Kinne
    EDV-Beratung
    www.kinne.de

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Das tut mir wirklich leid, das muss IBM vergessen haben (wer ändert denn auch die Datenbasis der Queries gleich massenweise )
    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
    Sep 2003
    Beiträge
    221
    Hallo Baldur,

    vielen Dank für den "guten" Hinweis.
    Aber es kann doch nicht sein, dass die
    IBM mal "irgendwas" vergisst. Die doch
    nicht....
    Peter Kinne
    EDV-Beratung
    www.kinne.de

  4. #4
    Registriert seit
    Nov 2003
    Beiträge
    2.306
    Es können bis zu 30 Querys mit Auswahl 2 gleichzeitig ausgewählt und dann einzeln bearbeitet werden. Das ist vielleicht etwas schneller als jede einzeln nacheinander auszuwählen und zu bearbeiten.

  5. #5
    Registriert seit
    Apr 2008
    Beiträge
    72
    Ein bisschen ketzerischer Vorschlag: ...bringt ein chgpf oder ovrdbf mit lvlchk *no nichts?

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    LVLCHK(*NO) funktioniert nur, wenn neue Felder am Ende dazugekommen sind und sich keine Formate (Längen, Dezimalausprägung) geändert haben.
    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
    Mar 2002
    Beiträge
    5.287
    .. gehd net, gibdsnet, gehdschlechd, gibdsmanchmal.
    da kommt man wohl nur mit MI dran.

    D*B

    Zitat Zitat von peter.kinne Beitrag anzeigen
    Hallo zusammen,

    durch eine umfangreiche Datenbankänderung müssen wir ca. 2000 Queries aktualiseren.

    Mit der Hand ist das sehr mühsam und auch fast unmüglich. Query aufrufen, Auswahl 2 und dann speichern......

    Gibt es einen Weg (API) oder so, um das maschinell zu machen?

    Danke für jeden schnellen Tipp,

    Peter Kinne
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Nun jein.
    Es gab da mal ein MI-Programm zum Auslesen der verwendeten Dateien.
    Da die interne Query-Struktur nicht dokumentiert ist, kann man sicherlich mal mit DMPSYSOBJ ein QRYDFN analysieren.

    Irgendwo stehen die Formatebenen-ID's rum, die dann nur ersetzt werden müssen.
    Allerdings: siehe LVLCHK
    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

  9. #9
    Registriert seit
    Aug 2007
    Beiträge
    6

    QUERY und LVLCHK

    Zitat Zitat von Fuerchau Beitrag anzeigen
    Nun jein.
    Es gab da mal ein MI-Programm zum Auslesen der verwendeten Dateien.
    Da die interne Query-Struktur nicht dokumentiert ist, kann man sicherlich mal mit DMPSYSOBJ ein QRYDFN analysieren.

    Irgendwo stehen die Formatebenen-ID's rum, die dann nur ersetzt werden müssen.
    Allerdings: siehe LVLCHK
    Für den Update *QRYDFN füge ich ein RPG-PGM an. Das Thema gabs schon mal. Die genannten Einschräkungen für den Austausch der FormatLevel-ID müssen beachtet werden.
    M.Steibert
    PHP-Code:
         h datfmt(*ISO)
          * 
    to compile
          
    *
         
    D*B   CRTSQLRPGI UPDQRYF
         D
    *B+       COMMIT(*NONE)
         
    D*B+       OBJTYPE(*MODULE)
         
    D*B+       DATFMT(*ISO)
         
    D*B+       DBGVIEW(*SOURCE)
         
    D*B   CRTPGM UPDQRYF
         D
    *B+       BNDDIR(QC2LE)
         
    D*B+       ACTGRP(UPDQRYF)
          *---   
    Prototypes Export    ----------------------------------------
         
    D UPDQRYF         PR                  EXTPGM('UPDQRYF')
         
    d QueryName                     10A   const
         
    d QueryLib                      10A   const
          *-------------------------------------------------------------------
          * 
    Resolve System Pointer
         D rslvsp          Pr              
    *   ProcPtr  ExtProc'rslvsp' )
         
    D  ObjTyp                        2a   Value
         D  ObjNam                         
    *   Value  Options( *String )
         
    D  ObjLib                         *   Value  Options( *String )
         
    D  AutReq                        2a   Value
          
    *-------------------------------------------------------------------
          * 
    set Space Pointer from Systempointer
         D setsppfp        Pr              
    *   ExtProc'setsppfp' )
         
    D   Object                        *   Value  ProcPtr
          
    *
          *-------------------------------------------------------------------
          * 
    set Spacepointer offset
         D setsppo         Pr              
    *   ExtProc'setsppo' )
         
    D   SpcPtr                        *   Value
         D   Offset                      10i 0 Value
          
    *-------------------------------------------------------------------
          *  
    copy memory from address to address
         D MemCpy          Pr              
    *   ExtProc'memcpy' )
         
    D  pOutMem                        *   Value
         D  pInpMem                        
    *   Value
         D  iMemSiz                      10u 0 Value
          
    *-------------------------------------------------------------------
          * 
    Send program message
         D SendSysMsg      PR                  EXTPGM
    ('QMHSNDPM')
         
    D  Message_ID                    7A   CONST
         
    D  Message_File                 20A   CONST
         
    D  Message_Data                512    CONST
         
    D  Length                       10I 0 CONST
         
    D  Message_Type                 10A   CONST
         
    D  Message_Q                    10A   CONST
         
    D  Pgm_Stack                    10I 0 CONST
         
    D  Message_Key                        LIKE(QMHSNDPM_MSGKEY)
         
    DMessage Error
         D  Msg_Error                          LIKE
    (QMHSNDPM_MSGERR)
         **
         
    dGetFileDescription...
         
    d                 pr                  extpgm('QDBRTVFD')
         
    d Receiver                       1    options(*varsize)
         
    d LenReceiver                   10i 0 const
         
    d QualFileName                  20
         d Format                         8    
    const
         
    d QualFileName                  20    const
         
    d RcdFmtName                    10    const
         
    d OvrPrc                         1    const
         
    d System                        10    const
         
    d FmtType                       10    const
         
    d ApiError                            likeds(ApiError)
         **
         
    D ApiError        DS                  qualified
         D BytesProvided                 10i 0 Inz
    ( %SizeApiError ))
         
    D BytesAvailable                10i 0 Inz
         D MsgID                          7a
         D                                1a
         D MsgData                      256a
          
    *
         
    DQMHSNDPM_MSGKEY  s              4A
         DQMHSNDPM_MSGERR  DS
         D PROVID                  1      4B 0
         D AVAIL                   5      8B 0
         D RTNMSG                  9     15
         D RSVR                   16     16
         D RTNDTA                 17    256
          
    extract from
          
    * /COPY QSYSINC/QRPGLESRC,QDBRTVFD
         DQDBQ41           DS           256
          
    Header information
         D QDBDFSEQ               81     93
          
    Level Identifier
          
    *---   Prototypes Import    ----------------------------------
          *---   
    local Prototypes     ----------------------------------
         
    d posObjectspace  pr
         d get1stFormatID  pr            13a
         d  infile                       10a   value
         d  inlib                        10a   value
         d switchFormatID  pr
         d logout          pr
          
    *---   Constants and Types  ----------------------------------
         
    d TRUE            c                   *ON
         d FALSE           c                   
    *OFF
          
    *
         
    d UPDQRYF         PI
         d QueryName                     10A   
    const
         
    d QueryLib                      10A   const
          *---   
    statefull Variables  ----------------------------------
         
    d curFormatID     s             13A   inz
         d oldFormatID     s             13A   inz
         
    **
         **-- 
    Query object (*qrydfnprogram state
         
    **
         
    D pQryObject      s               *   ProcPtr
         D pQryTemplate    s               
    *
         
    D QryTemplate     s          32767a   BasedpQryTemplate )
         **
         ** 
    object header
         d objectType      s              2a   inz
    (x'1911')
         **
         ** 
    inputfile definition
         
    **
         
    D InpFilesHeader  Ds                  inz qualified
         D  Totlen                       10i 0
         D                               10i 0
         D                               10i 0
         D                                5i 0
         D  NbrFiles                      5i 0
         D InpFilesDetail  Ds            80    inz qualified Dim
    32 )
         
    D                                5i 0 OverlayInpFilesDetail:  )
         
    D  Name                         10a   OverlayInpFilesDetail:  )
         
    D                                5i 0 OverlayInpFilesDetail13 )
         
    D  Library                      10a   OverlayInpFilesDetail15 )
         
    D                                5i 0 OverlayInpFilesDetail25 )
         
    D  Member                       10a   OverlayInpFilesDetail27 )
         
    D                                5i 0 OverlayInpFilesDetail37 )
         
    D  Recordfmt                    10a   OverlayInpFilesDetail39 )
         
    D                                5i 0 OverlayInpFilesDetail49 )
         
    D  FileID                        3a   OverlayInpFilesDetail51 )
         
    D                                5i 0 OverlayInpFilesDetail55 )
         
    D  RecordID                     13a   OverlayInpFilesDetail57 )
         
    D                               11a   OverlayInpFilesDetail70 )
          *---   
    work Variables SQL   ----------------------------------
         
    d offset          s              5i 0 inz
         d posInputfiles   s              5i 0 inz
    (46)
         
    d offsetInputfiles...
         
    d                 s              5i 0 inz
         D i               s              5i 0
          
    /free
               posObjectspace
    ();
               
    pQryTemplate  setsppopQryTemplateposInputfiles );
               
    MemCpy( %AddroffsetInputfiles )
                     : 
    pQryTemplate
                     
    : %SizeoffsetInputfiles )
                     ) ;
               
    pQryTemplate  setsppopQryTemplateoffsetInputfiles );
               
    MemCpy( %AddrInpFilesHeader )
                     : 
    pQryTemplate
                     
    : %SizeInpFilesHeader )
                     ) ;
               
    Offset  offsetInputfiles + %SizeInpFilesHeader ) ;
               for 
    1 to InpFilesHeader.NbrFiles;
                   
    pQryTemplate  setsppopQryTemplateOffset ) ;
                   
    MemCpy( %AddrInpFilesDetail(i) )
                         : 
    pQryTemplate
                         
    : %SizeInpFilesDetail )
                         ) ;
                   
    switchFormatID();
                   
    offset offset + %SizeInpFilesDetail );
                 endfor;
               return;
          /
    end-free
          
    *-------------------------------------------------------------
         
    P posObjectspace  b
         d posObjectspace  pi
          
    /free
                 pQryObject  
    =
                  
    rslvspobjectType
                        
    : %TrimRQueryName )
                        : %
    TrimRQueryLib  )
                        : 
    x'0000'
                        
    );
                 
    pQryTemplate setsppfppQryObject );
               return;
          /
    end-free
         P posObjectspace  e
          
    *-------------------------------------------------------------
         
    p get1stFormatID  b
         d get1stFormatID  pi            13a
         d  infile                       10a   value
         d  inlib                        10a   value
         d FileLib         ds
         d  File                         10
         d  Lib                          10
         dOutfile          s             20a   inz
         dFormatID         s             13a   inz
          
    /free
              Lib  
    inlib;
              
    File inFile;
              
    ApiError.BytesProvided 0;
                
    monitor;
                 
    GetFileDescription(
                         
    QDBQ41
                       
    : %size(QDBQ41)
                       : 
    Outfile
                       
    'FILD0200'
                       
    FileLib
                       
    '*FIRST'
                       
    '0'
                       
    '*LCL'
                       
    '*EXT'
                       
    ApiError
                     
    );
                
    on-error;
                   return 
    ' ';
                
    endmon;
                if 
    ApiError.MsgID <> '       ';
                   
    Clear FormatID ;
                else;
                   
    FormatID QDBDFSEQ;
                endif;
                return 
    FormatID ;
          /
    end-free
         p get1stFormatID  e
          
    *-------------------------------------------------------------
         
    P switchFormatID  b
         d switchFormatID  pi
          
    /free
                   curFormatID
                    
    get1stFormatID(
                        
    InpFilesDetail(i).Name
                      
    InpFilesDetail(i).Library );
                   
    oldFormatID
                    
    InpFilesDetail(i).RecordID;
                   if 
    curFormatID <> *BLANK and curFormatID <> oldFormatID;
                      
    InpFilesDetail(i).RecordID curFormatID;
                      
    MemCpypQryTemplate
                            
    : %AddrInpFilesDetail(i) )
                            : %
    SizeInpFilesDetail )
                            ) ;
                      
    logout();
                   endif;
               return;
          /
    end-free
         P switchFormatID  e
          
    *-------------------------------------------------------------
         
    P logout          b
         d logout          pi
         d message         S           1024    inz
         d Length          s             10I 0 inz
          
    /free
                   message 
    'Recordlevel-ID changed from ' +
                             
    oldFormatID  +
                             
    ' to ' +
                             
    curFormatID  +
                             
    ' for file: ' +
                             %
    trim(InpFilesDetail(i).Library) + '/' +
                             %
    trim(InpFilesDetail(i).Name) +
                             
    ' in QRYDFN: ' +
                             %
    trim(QueryLib) + '/' +  %trim(QueryName)
                              ;
                   
    Length  = %len( %trim(message) );
                   
    SendSysMsg(
                       
    '       '
                     
    '                 '
                     
    message
                     
    Length
                     
    '*INFO     '
                     
    '*CTLBDY   '
                     
    1
                     
    QMHSNDPM_MSGKEY
                     
    QMHSNDPM_MSGERR
                   
    );
               return;
          /
    end-free
         P logout          e
          
    *------------------------------------------------------------- 

  10. #10
    Registriert seit
    Jan 2007
    Beiträge
    189
    Zitat Zitat von Fuerchau Beitrag anzeigen
    ...
    Da die interne Query-Struktur nicht dokumentiert ist, kann man sicherlich mal mit DMPSYSOBJ ein QRYDFN analysieren.
    zur Infos:
    Breaking News!!
    ... ab v610 mit ptf SI34166, man kann DSPPGMREF mit *QRYDFN machen

    Leider, ohne v610 geht es (meistens*) so:
    Code:
    DMPOBJ  MyObj *qrydfn
    CPYSPLF    FILE(QPSRVDMP) TOFILE(QTEMP/MyFile) SPLNBR(*LAST)  
    ...
    In RPG:
    ...
    D r_line          ds                      
    D  type                  12     20A       
    D  file_r                22     31A       
    D  lib_r                 66     75        
    ...
    IF type = 'SYP 19 01'; 
      whpnam = obj_r;  
      whtext = obj_d;  
      whfnam = file_r; 
      whlib = obj_l;   
    ... blah blah blah
    * Problem bei DMPOBJ ist nicht alle Queries gibt die Pointer Infos aus. Habe ein Service Request bei IBM aufgemacht und bekam diese Antwort (wie Baldur sagte).
    Das Format einer DMPOBJ - Ausgabe für eine Query-Definition ist nicht öffentlich dokumentiert und es besteht auch keine Garantie darüber, dass sich dieses Format nicht ändern kann (durch PTFs, Releasewechsel, .... )
    Ubersetzung: Es ist nicht unser Problem

    Übrigens, diese (komplette) Quelle (mit die ganze X-Ref Cross Reference Utility Quelle) wird demnächst (ca. ende September) als Open Source freigegeben.
    mfg

    Kit
    www.ecofitonline.com
    DeskfIT - ChangefIT - XrefIT

  11. #11
    Registriert seit
    May 2002
    Beiträge
    1.121
    Zitat Zitat von kitvb1 Beitrag anzeigen
    Übrigens, diese (komplette) Quelle (mit die ganze X-Ref Cross Reference Utility Quelle) wird demnächst (ca. ende September) als Open Source freigegeben.
    Ist das noch aktuell, das es das als Open Source gibt.
    Wenn ja.... Wo??

    Gruß
    Ronald

  12. #12
    Registriert seit
    Sep 2008
    Beiträge
    22

    UPDQRYF geht nicht mehr .....

    Hallo Zusammen,
    seit Monaten setzen wir das UPDQRYF erfolgreich ein. So einiger Zeit geht das Programm nun leider nicht mehr. Warum weiß ich leider nicht, da wir keinen Releasewechsel hatten (nur die üblichen PTF's) kann ich mir keine Erklärung geben.

    Es kommt bei jedem Query folgende Fehlermeldung:

    Objektdomäne oder Speicherschutzfehler für Offset X'0000000000000000' in
    Objekt MARGEN_IMS.
    Funktionsprüfung. MCH6801 nicht überwacht durch QC2UTIL1 bei Anweisung
    0000000001, Instruktion X'0000'.

    Der Aufruf an POSOBJECTS wurde fehlerhaft beendet


    Ursache . . . . : RPG-Prozedur UPDQRYF in Programm IMSPRDPGM/UPDQRYF hat bei
    Anweisung 186 Programm oder Prozedur POSOBJECTS aufgerufen; der Aufruf wurde
    fehlerhaft beendet. Ist der Name *N, handelte es sich bei dem Aufruf um
    einen Bindeaufruf nach Prozedurzeiger.

    Unser Release ist: V5R4M0
    Vorbereitung auf V7R1M0 läuft gerade (Ende Januar!).

    HILFE!!

Similar Threads

  1. Query mit Eingangsfolge
    By Frank Ziegler in forum IBM i Hauptforum
    Antworten: 14
    Letzter Beitrag: 10-12-06, 10:21
  2. QueryManager / Query ---> Aufruf mit Variablen
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 29-11-06, 18:07
  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
  •