[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    2.943
    Zitat Zitat von Bernd Wiezroek
    .
    Es kommt zu keiner Fehlermeldung.
    Das stimmt so nicht! Du müsstest bei dem UPDATE-statement den SQLCOD -510 erhalten: Cursor &1 für Datei &2 schreibgeschützt.

    Wird ein Cursor ohne ORDER BY-Kausel definiert, können Datensätze ohne Angabe der FOR UPDATE OF Klausel fortgeschrieben werden.
    Der Datensatz wird beim Einlesen nur dann gelockt, wenn im Programm ein Update auf den Cursor mit WHERE CURRENT OF vorhanden ist.

    Wird eine ORDER BY-Klausel im Declare-Statement angegeben, gilt der CURSOR als Read Only, es sei denn die FOR UPDATE OF wird angegeben.

    Bei der FOR UPDATE OF Klausel müssen alle Felder, die geändert werden sollen durch Kommata getrennt aufgelistet werden.

    Werden nicht alle Felder aufgelistet, ist der UPDATE nicht erfolgreich.

    Noch ein Tipp frage nach jedem SQL-Statement entweder SQLCOD oder SQLSTT ab, um festzustellen ob ein Fehler aufgetreten ist.

    PHP-Code:
    C/EXEC SQL                                                            
    C
    + Declare CsrOrdH dynamic scroll Cursor WITH HOLD for                
    CSelect Order_NumberOrder_Total                                   
    C
    +   from Order_Header                                                
    C
    +   where     Order_Number between :FirstOrderNo and :LastOrderNo    
    C
    +         and Year(Order_Date)   = :PrevYear                         
    C
    +   Order by Order_Number                                            
    C
    + For Update Of Order_TotalOrder_Date                                          
    C
    /End-Exec                                                            
                                                                          
    C
    /EXEC SQL Close CsrOrdH                                              
    C
    /END-EXEC                                                            
                                                                          
    C
    /EXEC SQL Open  CsrOrdH                                              
    C
    /END-EXEC                                                            
    C                   DoU       SQLSTT   
    '02000'                      
                                                                          
    C/EXEC SQL                                                            
    C
    Fetch next from CsrOrdH                                            
    C
    +       into :OrderNo, :OrderTotal                                   
    C
    /END-EXEC 
            
    C
    /EXEC SQL     
    C
    update Order_Header                      
    C
    +        Set Order_Total = :OrderTotal   
    C
    +            Order_Date = :OrderDate  
    C
    where  Current of CsrOrdH                
    C
    /END-EXEC 

    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

  2. #2
    Registriert seit
    Apr 2004
    Beiträge
    54
    Das War die Lösung das Order by ist im Beispiel nicht drin. Den Sqlcod hatte ich nicht überwacht. Jetzt kann ich das Programm vernünftig machen.
    Vielen Dank für die Hilfe.

  3. #3
    Registriert seit
    Jun 2005
    Beiträge
    5

    SQLRPG CONNECT FEHLER bei LOKALE UND REMOTE/DATEIEN

    Ich möchte Sätze aus Maschine A in einer Datei in Maschine B inserieren mit dem Befehl INSERT.

    Beim CONNECT habe ich Probleme. Maschine A ist Lokal , Maschine B ist Remote .
    Wie kann ich CONNECT steuern ?
    Wenn ich Interaktive SQL aufrufe, habe ich richtiges Ergebnis, aber bei Embedded-Sql läuft es nicht

    Ich deklariere beie Dateien,
    mach CONNECT auf Lokal,open und fetche die Felder der Lokalen dateien, aber immer Fehler CONNECT ALREADY EXIST
    Muss ich auf explicite CONNECT LOKALDB verzichten oder was soll ich machen ?

    CONNECT TO LOKALDB
    dann kommen logische Bearbeitung und mache so ein EXSR INSERT, da mache ich wieder CONNECT TO REMOTEDB, es klappt nicht.
    Kann mir jemand sagen, wie man CONNECT AUF LOKALDB macht, wo man Ursptungsdatei Liest und die Sätze in die REMOTEDATEI übeträgt vorgeht ? Bin neu mit Embedd-SQLRPG

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.389
    Hallo,

    an die lokale Maschine darfst du nicht connecten, das ist abgeklemmt damit das nicht etwa im Server Job läuft (CFINT lässt grüssen), deshalb wirst du automatisch connected.
    An die remote Maschine B musst du connecten.
    Es ist immer nur eine Connection aktiv (schließlich sagst du bei der SQL Operation ja nicht an welche Büchse du dich wendest)-
    Connections werden mit SET CONNECTION geswitcht.

    Du musst also zwischen lesen und schreiben jeweils switchen.

    Etwas eleganter müsste das eigentlich mit zwei Activation Groups gehen, sprich zwei ILE Modulen in getrennten Serviceprogrammen mit jeweils eigener Activation Group. Serviceprogramm A arbeitet lokal in Activation Group A; Serviceprogramm B connected remote an B und läuft in der Activation Group B. (Hoffentlich wird dem maroden PreCompiler hierbei nicht schwindelig).
    Die beiden Zugriffsmodule werden dann von dem Programm mit der steuernden Logik verwendet und die lese- bzw. schreib Procedures aufgerufen. Dazu müssen dann die beiden Serviceprogramme in das steuernde Programm gebunden werden.

    mfg

    Dieter Bender


    Zitat Zitat von polo
    Ich möchte Sätze aus Maschine A in einer Datei in Maschine B inserieren mit dem Befehl INSERT.

    Beim CONNECT habe ich Probleme. Maschine A ist Lokal , Maschine B ist Remote .
    Wie kann ich CONNECT steuern ?
    Wenn ich Interaktive SQL aufrufe, habe ich richtiges Ergebnis, aber bei Embedded-Sql läuft es nicht

    Ich deklariere beie Dateien,
    mach CONNECT auf Lokal,open und fetche die Felder der Lokalen dateien, aber immer Fehler CONNECT ALREADY EXIST
    Muss ich auf explicite CONNECT LOKALDB verzichten oder was soll ich machen ?

    CONNECT TO LOKALDB
    dann kommen logische Bearbeitung und mache so ein EXSR INSERT, da mache ich wieder CONNECT TO REMOTEDB, es klappt nicht.
    Kann mir jemand sagen, wie man CONNECT AUF LOKALDB macht, wo man Ursptungsdatei Liest und die Sätze in die REMOTEDATEI übeträgt vorgeht ? Bin neu mit Embedd-SQLRPG
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Jun 2005
    Beiträge
    5
    : : Es sollen Daten die auf einer Produktionsmaschiene vorliegen in eine andre Maschieren geschrieben werden.

    Die Verbindung besteht schon.

    Embeded-SQL-Befehlen aufrufen.
    In diesem Programm wird der CONNECT zur fernen AS400-Datenbank gemacht.
    Ein INSERT und ein UPDATE funktioniert auch schon in einer interaktiven Anweißung.
    Aber ich habe das Problem.
    Ich kann Embeded-SQL nicht und weis auch nicht wie man das macht.

    Nun bekomme ich den Fehler SQLSTATE 01532
    Ich mache CONNECT nur auf Remote. Deklariere Lokal-DB, mache OPEN, mach auch FETCH in Schleife dann sage ich EXSR VERARBEITE, niet, es klappt nicht. Es kommt so eine Meldung DB2 Multisystem fehlt oder CRTNODGRP. Bitte um Hilfe
    Wer kann mir sagen wie ich Sätze auf Datei A in DateiB(Remote-Datei inserieren kann) ?

  6. #6
    Registriert seit
    Mar 2002
    Beiträge
    5.389
    Hallo,

    das Minimum, das ich von einem Frager erwarte ist, dass er die Antwort zumindest liest; sonst verschwnedet der Antworter lediglich seine Zeit, wozu ich keine Lust habe.

    mfg

    Dieter Bender

    Zitat Zitat von polo
    : : Es sollen Daten die auf einer Produktionsmaschiene vorliegen in eine andre Maschieren geschrieben werden.

    Die Verbindung besteht schon.

    Embeded-SQL-Befehlen aufrufen.
    In diesem Programm wird der CONNECT zur fernen AS400-Datenbank gemacht.
    Ein INSERT und ein UPDATE funktioniert auch schon in einer interaktiven Anweißung.
    Aber ich habe das Problem.
    Ich kann Embeded-SQL nicht und weis auch nicht wie man das macht.

    Nun bekomme ich den Fehler SQLSTATE 01532
    Ich mache CONNECT nur auf Remote. Deklariere Lokal-DB, mache OPEN, mach auch FETCH in Schleife dann sage ich EXSR VERARBEITE, niet, es klappt nicht. Es kommt so eine Meldung DB2 Multisystem fehlt oder CRTNODGRP. Bitte um Hilfe
    Wer kann mir sagen wie ich Sätze auf Datei A in DateiB(Remote-Datei inserieren kann) ?
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  7. #7
    Registriert seit
    Jul 2004
    Beiträge
    82
    Zitat Zitat von BenderD
    Hallo,

    das Minimum, das ich von einem Frager erwarte ist, dass er die Antwort zumindest liest; sonst verschwnedet der Antworter lediglich seine Zeit, wozu ich keine Lust habe.

    mfg

    Dieter Bender
    Finde das du ihm eine eindeutige Lösung aufgezeigt hast , wenn er nicht genügent vom Programmieren weiß solte er es sich aneignen.

    Die nochmalige wiederholung seiner Frage läßt darauf schließen das er ein kompletes Program Script haben möchte.

    mfg

  8. #8
    Registriert seit
    Apr 2004
    Beiträge
    54
    Die Lösung läuft prima als ich den fehler erstmal verstanden hatte war es relativ einfach.

    Ingesammt hab ich durch die Dateistruktur nur probleme wenn einzelne Satzarten nicht vorhanden sind. Da korrigire ich wenn erforderlich von Hand.

  9. #9
    Registriert seit
    Jun 2005
    Beiträge
    5

    Embedded

    Nein Asy, ich habe schon verstanden und habe auch so gehandelt.

    Nun habe ich nur noch ein Problem. Das Programm läuft aber es schreibt nur einen Satz in die ferne Datei. Das Problem muss nun beim FETCH liegen.
    Ich bin euch dankbar für die Tipps. Ich bin nur neu in embedded SQLRPG.
    Bitte nicht falsch verstehen, ich möchte es nur lernen.

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.788
    @polo
    Du musst zwischen den Verbindungen umschalten, also:

    Connect Zielsystem
    insert ...
    connect reset
    fetch

    Allerdings dauert das ganze ziemlich lange. Besser ist es tatsächlich (wie Dieter beschreibt) 2 Programme mit jeweils eigener Activationgroup so dass zwischen den Verbindungen nicht umgeschaltet werden muss.
    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

  11. #11
    Registriert seit
    Jul 2004
    Beiträge
    82
    Zitat Zitat von polo
    Nein Asy, ich habe schon verstanden und habe auch so gehandelt.

    Nun habe ich nur noch ein Problem. Das Programm läuft aber es schreibt nur einen Satz in die ferne Datei. Das Problem muss nun beim FETCH liegen.
    Ich bin euch dankbar für die Tipps. Ich bin nur neu in embedded SQLRPG.
    Bitte nicht falsch verstehen, ich möchte es nur lernen.
    Wollte nur den Dialog endschärfen .

    Da ich mich derzeit selbst erstmalig mit RGP-ILE + Datenbank Versuche , weiß ich das ungenaue Fragestellungen und nachfragen wegen der Begriffserklärung , bei Profis unhöfflich komentiert werden.

    Es scheint nicht wirklich üblich zu sein völlig ohne Vorkentnisse Fragen zur Handhabung zu stellen.

  12. #12
    Registriert seit
    Mar 2002
    Beiträge
    5.389
    Hallo,

    machts uns doch nicht so schwer: wenn was unklar ist, bitte genau beschreiben wos klemmt, dann kommt auch noch was nach. In etlichen Threads in diesem Forum kann man nachlesen, wie man erfolgreich an Antworten kommt...

    mfg

    Dieter Bender

    Zitat Zitat von ASY
    Wollte nur den Dialog endschärfen .

    Da ich mich derzeit selbst erstmalig mit RGP-ILE + Datenbank Versuche , weiß ich das ungenaue Fragestellungen und nachfragen wegen der Begriffserklärung , bei Profis unhöfflich komentiert werden.

    Es scheint nicht wirklich üblich zu sein völlig ohne Vorkentnisse Fragen zur Handhabung zu stellen.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Embedded SQL in VARPG
    By Squall in forum NEWSboard Programmierung
    Antworten: 23
    Letzter Beitrag: 18-10-06, 13:01
  2. Update Syntax SQL
    By wuwu in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 18-07-06, 16:31
  3. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 10:43
  4. Character verbinden in Embedded SQL
    By e_sichert in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 03-05-06, 11:47
  5. embedded SQL in ILE RPG, UPDATE
    By Zupfl50 in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 06-10-04, 22:04

Berechtigungen

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