[Search for users]
[Overall Top Noters]
[List of all Conferences]
[Download this site]
Title: | DATATRIEVE INTEREST GROUP |
Notice: | ADD KEYWORDS TO NOTES FOR EASY SEARCHES |
Moderator: | IMTDEV::KRATZER |
|
Created: | Fri Mar 21 1986 |
Last Modified: | Fri Jun 06 1997 |
Last Successful Update: | Fri Jun 06 1997 |
Number of topics: | 3011 |
Total number of notes: | 9337 |
3001.0. "IF-THEN causes %RDB-E-NOT_VALID " by UTRTSC::SCHOLLAERT (Think before you shrink) Fri Mar 28 1997 01:53
Hello,
Customer reports problem with STORING NULL value with Datatrieve 7.1
in Rdb database.
NULL is default value for a number of fields. This works fine
until customer codes the following IF-THEN statement to
prevent Datatrieve trying to store a 0 instead of NULL in the
case a user give a 0 as input during a STORE.
IF (IAD.RS_SPECME1 NE 0) THEN AF.RSSPE1 = IAD.RS_SPECME1
results in :
"%RDB-E-NOT_VALID, validation on field RSSPE1 caused operation to fail"
when RS_SPECME1 is 0.
As if a 0 is tried to be stored ?! When the IF statement is
not used, Datatrieve STORES, as expected, a NULL in RS_SPECME1.
I would expect Datatrieve to do the same when the IF is false.
With an ELSE is added, the statement works fine, but this is not what
the customer needs.
IF (IAD.RS_SPECME1 NE 0) THEN AF.RSSPE1 = IAD.RS_SPECME1 ELSE AF.RSSPE1 = 3
Is this a bug ? Is there a workaround or some other contruction
possible to get a NULL stored when a users input a 0 ?
Regards,
Jan
CSC Holland
-------------------------------------------------------------------------
DEFINE RECORD INV_AFORM_REC
!
01 TOTAAL_REC.
03 REGNR PIC 9(4).
03 TOESTEM PIC 9(1).
03 SPECST PIC 9(3).
03 SPECME PIC 9(2).
03 ZKHUIS PIC 9(1).
03 WOONPLTS PIC 9(4).
03 GESLACHT PIC X(1).
03 GEBDAT PIC X(6).
03 HSARTS PIC 9(3).
03 INVUL_DAT PIC X(6).
03 DGN_1E PIC 9(1).
03 DATDGN1E.
05 DATDGN1E_M PIC 9(2).
05 DATDGN1E_J PIC 9(2).
03 DATKON1E.
05 DATKON1E_M PIC 9(2).
05 DATKON1E_J PIC 9(2).
03 DUUR_SYMP PIC 9(3).
03 RELSPEC_JN PIC 9(1).
03 RELSPEC1.
05 RS_SPECME1 PIC 9(2).
05 RS_ZKHUIS1 PIC X(3).
05 RS_GEM1 PIC 9(4).
;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CREATE TABLE AANM_FORM (
REGNR REGNR_01_DOM,
INVULDAT DATUM_01_DOM,
INVOEDAT DATUM_01_DOM,
TOESTEM NEEJA_01_DOM,
SPECST SPECST_01_DOM,
SPECME SPECME_01_DOM,
ZKHUIS ZKHUIS_01_DOM,
GESLACHT GESLACHT_01_DOM,
GEBDAT DATUM_02_DOM,
DGNEERST DIAGNOSE_01_DOM,
DATDGN1M MAAND_01_DOM,
DATDGN1J JAARTAL_01_DOM,
DATKON1M MAAND_01_DOM,
DATKON1J JAARTAL_01_DOM,
DUURSYMP AANTAL_01_DOM,
RELSP_NJ NEEJA_02_DOM,
RSSPE1 SPECME_02_DOM,
RSZKH1 ZKHUIS_02_DOM,
RSGEM1 GEMEENTE_01_DOM,
CONSTRAINT AF_$$PRIMKEY
PRIMARY KEY (REGNR)
NOT DEFERRABLE);
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CREATE DOMAIN SPECME_02_DOM
AS TINYINT
DEFAULT NULL
CHECK
( (SPECME_02_DOM BETWEEN 1 AND 14) OR
(SPECME_02_DOM BETWEEN 16 AND 30) OR
(SPECME_02_DOM BETWEEN 34 AND 35) OR
(SPECME_02_DOM BETWEEN 60 AND 61) OR
(SPECME_02_DOM BETWEEN 80 AND 87) OR
(SPECME_02_DOM IS NULL) )
NOT DEFERRABLE;
COMMENT ON DOMAIN SPECME_02_DOM IS
'omschr : DOMain voor de SPECialisME-variabelen van het type 02;';
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DEFINE PROCEDURE STORE_AANM_FORM
!
FINISH
!
READY INV_AFORM_DOM READ
READY IBD_DIR.IBD WRITE
!
DECLARE REC_TELLER PIC 9(6).
REC_TELLER = 0
DECLARE LAST_REGNR PIC 9(4).
!
FOR IAD IN INV_AFORM_DOM
BEGIN
REC_TELLER = REC_TELLER + 1
LAST_REGNR = IAD.REGNR
!
STORE AF IN AANM_FORM USING
BEGIN
!
PRINT IAD.REGNR ON USER53:[DIMMCIBD.STORE05]STORED_IN_AF.DAT
!
AF.REGNR = IAD.REGNR
AF.INVULDAT = IAD.INVUL_DAT
AF.INVOEDAT = IAD.INVOER_DAT
AF.TOESTEM = IAD.TOESTEM
AF.SPECST = IAD.SPECST
AF.SPECME = IAD.SPECME
AF.ZKHUIS = IAD.ZKHUIS
IF (IAD.GESLACHT = 'M') THEN AF.GESLACHT = 1 ELSE AF.GESLACHT = 2
AF.GEBDAT = IAD.GEBDAT
AF.DGNEERST = IAD.DGN_1E
AF.DATDGN1M = IAD.DATDGN1E_M
AF.DATDGN1J = IAD.DATDGN1E_J
AF.DATKON1M = IAD.DATKON1E_M
AF.DATKON1J = IAD.DATKON1E_J
AF.DUURSYMP = IAD.DUUR_SYMP
AF.RELSP_NJ = IAD.RELSPEC_JN
IF (IAD.RS_SPECME1 NE 0) THEN AF.RSSPE1 = IAD.RS_SPECME1
IF (IAD.RS_ZKHUIS1 NE ' ') THEN AF.RSZKH1 = IAD.RS_ZKHUIS1
IF (IAD.RS_GEM1 NE 0) THEN AF.RSGEM1 = IAD.RS_GEM1
! IF (IAD.RS_SPECME1 NE 0) THEN AF.RSSPE1 = IAD.RS_SPECME1 ELSE
AF.RSSPE1 = 3
! IF (IAD.RS_ZKHUIS1 NE ' ') THEN AF.RSZKH1 = IAD.RS_ZKHUIS1 ELSE
AF.RSZKH1 = '001'
! IF (IAD.RS_GEM1 NE 0) THEN AF.RSGEM1 = IAD.RS_GEM1 ELSE
AF.RSGEM1 = 935
END
END
!
COMMIT
!
FINISH
!
PRINT ""
PRINT "het laatst verwerkte rec had volgnummer : ", REC_TELLER (-)
PRINT " en REGNR : ", LAST_REGNR (-)
END_PROCEDURE
T.R | Title | User | Personal Name | Date | Lines |
---|
3001.1 | Anybody home ? | UTRTSC::SCHOLLAERT | Think before you shrink | Wed Apr 02 1997 05:59 | 7 |
| Can someone have a look at this customer problem ?
Or should I submit an IPMT case ?
Thanks,
Jan
|
3001.2 | STORE, then MODIFY | UTRTSC::SCHOLLAERT | Think before you shrink | Thu Apr 03 1997 07:02 | 19 |
| Hello,
Customer found a workaround.
First do a STORE without any reference to the field
which has DEFAULT NULL.
Second do a MODIFY is the userinput is not 0.
Datatrieve Engineering, do I have to submit an IPMT
case to get this problem fixed ?
Regards,
Jan
|