Heyden
08-12-08, 12:47
Hallo,
ich habe SQL-Statements verwendet. Die übliche Reihenfolge:
- Declare
- Open
- Fetch.
Die Eingabedatei ist geschlüsselt, lese sie aber mit Order By in einer anderen Reihenfolge.
Das Lesen geschieht aber nicht Satz für Satz sondern, und da liegt anscheinend das Problem, sondern aus einer anderen Datei werden die Schlüssel für diese Datei geliefert.
Kann es sein, daß der komplette Vorgang: Cursor wieder schliessen, Deklarieren, Open und dann Lesen wiederholt werden muss?
Momentan erhalte ich nur die Meldung: Kein Satz vorhanden, da nicht alle Schlüssel in der Datei vorhanden sind.
Bitte um Hilfe.
Gruss
Stefan Heyden
*================================================= ========================
d FDBVALR e ds ExtName(FDBVAL)
d FDBNUMV e ds ExtName(FDBNUMView)
d FDBCLIR e ds ExtName(FDBCLI)
*................................................. ........................
* WorkFields
*...........
d WF_NUREFE s like(NUREFE)
d WF_NUGRE s like(NUGRE)
d WF_NURUB s like(NURUB)
d WF_NUMON s like(NUMON)
d WF_NUTYPE s like(NUTYPE)
d WF_NUNIV s like(NUNIV)
d WF_VLVALR s like(VLVALR)
d WF_VLVALS s like(VLVALS)
d WF_CLRACI s like(CLRACI)
d WF_Emittent s like(ISEMIT)
c/Exec Sql
c+ Declare Cursor_FDBNUM Cursor
c+ For Select *
c+ from FDBNUMVIEW
c+ where NUREFE = :WF_NUREFE and
c+ NUGRE = :WF_NUGRE and
c+ NURUB = :WF_NURUB and
c+ NUMON = :WF_NUMON and
c+ NUTYPE = :WF_NUTYPE and
c+ NUNIV = :WF_NUNIV
c+ order by NUREFE,
c+ NUGRE,
c+ NURUB,
c+ NUMON,
c+ NUTYPE,
c+ NUNIV
c+ for Read Only
c/End-Exec
:
:
*------------------
* File: FDBNUM
*------------------
c/Exec Sql
c+
c+ Open Cursor_FDBNUM
c+ using :WF_NUREFE,
c+ :WF_NUGRE,
c+ :WF_NURUB,
c+ :WF_NUMON,
c+ :WF_NUTYPE,
c+ :WF_NUNIV
c/End-Exec
c
c If SqlStt = SqlSttOk
c Eval CsOpen = True
c Else
c Eval CsOpen = False
c Eval SqlStmt = OpenLbl
c EndIf*============================================ =============================
* Get_FDBNUM - Lesen Satz in FDBNUM
*................................................. ........................
c Get_FDBNUM Begsr
c Clear WF_ReadKz
c movel '4' WF_NUNIV
c movel '000' WF_NUGRE
c movel '000' WF_NURUB
c movel '000' WF_NUMON
C movel '281' WF_NUTYPE
c movel(p) ISIN WF_NUREFE
c/Exec Sql
c+ Fetch Cursor_FDBNUM
c+ Into :FDBNUMV
c+
c/End-Exec
c Select
c When SqlStt = SqlsttOk
c If PgmErr = True
c Eval WF_ReadKz = 'F'
c EndIf
c When SqlStt = SqlSttNoRow
c Eval UpMoreRows = False
c Eval WF_ReadKz = 'F'
c
c Other
c Eval SqlStmt = FetchLbl
c Movel 'FDBNUM' WF_TblName
c ExSr UpSqlErr
c EndSl
c EndSr
*================================================= ========================
ich habe SQL-Statements verwendet. Die übliche Reihenfolge:
- Declare
- Open
- Fetch.
Die Eingabedatei ist geschlüsselt, lese sie aber mit Order By in einer anderen Reihenfolge.
Das Lesen geschieht aber nicht Satz für Satz sondern, und da liegt anscheinend das Problem, sondern aus einer anderen Datei werden die Schlüssel für diese Datei geliefert.
Kann es sein, daß der komplette Vorgang: Cursor wieder schliessen, Deklarieren, Open und dann Lesen wiederholt werden muss?
Momentan erhalte ich nur die Meldung: Kein Satz vorhanden, da nicht alle Schlüssel in der Datei vorhanden sind.
Bitte um Hilfe.
Gruss
Stefan Heyden
*================================================= ========================
d FDBVALR e ds ExtName(FDBVAL)
d FDBNUMV e ds ExtName(FDBNUMView)
d FDBCLIR e ds ExtName(FDBCLI)
*................................................. ........................
* WorkFields
*...........
d WF_NUREFE s like(NUREFE)
d WF_NUGRE s like(NUGRE)
d WF_NURUB s like(NURUB)
d WF_NUMON s like(NUMON)
d WF_NUTYPE s like(NUTYPE)
d WF_NUNIV s like(NUNIV)
d WF_VLVALR s like(VLVALR)
d WF_VLVALS s like(VLVALS)
d WF_CLRACI s like(CLRACI)
d WF_Emittent s like(ISEMIT)
c/Exec Sql
c+ Declare Cursor_FDBNUM Cursor
c+ For Select *
c+ from FDBNUMVIEW
c+ where NUREFE = :WF_NUREFE and
c+ NUGRE = :WF_NUGRE and
c+ NURUB = :WF_NURUB and
c+ NUMON = :WF_NUMON and
c+ NUTYPE = :WF_NUTYPE and
c+ NUNIV = :WF_NUNIV
c+ order by NUREFE,
c+ NUGRE,
c+ NURUB,
c+ NUMON,
c+ NUTYPE,
c+ NUNIV
c+ for Read Only
c/End-Exec
:
:
*------------------
* File: FDBNUM
*------------------
c/Exec Sql
c+
c+ Open Cursor_FDBNUM
c+ using :WF_NUREFE,
c+ :WF_NUGRE,
c+ :WF_NURUB,
c+ :WF_NUMON,
c+ :WF_NUTYPE,
c+ :WF_NUNIV
c/End-Exec
c
c If SqlStt = SqlSttOk
c Eval CsOpen = True
c Else
c Eval CsOpen = False
c Eval SqlStmt = OpenLbl
c EndIf*============================================ =============================
* Get_FDBNUM - Lesen Satz in FDBNUM
*................................................. ........................
c Get_FDBNUM Begsr
c Clear WF_ReadKz
c movel '4' WF_NUNIV
c movel '000' WF_NUGRE
c movel '000' WF_NURUB
c movel '000' WF_NUMON
C movel '281' WF_NUTYPE
c movel(p) ISIN WF_NUREFE
c/Exec Sql
c+ Fetch Cursor_FDBNUM
c+ Into :FDBNUMV
c+
c/End-Exec
c Select
c When SqlStt = SqlsttOk
c If PgmErr = True
c Eval WF_ReadKz = 'F'
c EndIf
c When SqlStt = SqlSttNoRow
c Eval UpMoreRows = False
c Eval WF_ReadKz = 'F'
c
c Other
c Eval SqlStmt = FetchLbl
c Movel 'FDBNUM' WF_TblName
c ExSr UpSqlErr
c EndSl
c EndSr
*================================================= ========================