Thanks James. I will look into this as an alternative to the UPDATE
command.

 

James Belisle

________________________________

From: [email protected] [mailto:[email protected]] On Behalf Of James
Bentley
Sent: Monday, March 28, 2011 1:21 PM
To: RBASE-L Mailing List
Subject: [RBASE-L] - Re: [No Subject]

 

Jim,

Consider using a BEFORE UPDATE Trigger or possibly AFTER UPDATE Trigger
on the original table which in turn 
inserts a record into the other table.  to give you an idea of how this
would work I am giving you code of an actual 
trigger from one of my applications. It deals with the MbrCurHomeAdr and
the RegisterofMbrs from which data is inserted
into MbrPrvHomeAdr (audit record of address changes).  The
RegisterofMbrs contains record counts, audit action,  audit date, 
and audit time for actions take place on the Address records.

---- begin  Before Update trigger --->
 -- Columns from Previous version MbrCurHomeAdr
SET VAR TBU048PMbrNumber INTEGER
SET VAR TBU048PHAdrSource TEXT
SET VAR TBU048PIv01 INTEGER
SET VAR TBU048PHMainAdrLn TEXT
SET VAR TBU048PIv02 INTEGER
SET VAR TBU048PHExtraAdrLn TEXT
SET VAR TBU048PIv03 INTEGER
SET VAR TBU048PHCity TEXT
SET VAR TBU048PIv04 INTEGER
SET VAR TBU048PHStateUSPS TEXT
SET VAR TBU048PIv05 INTEGER
SET VAR TBU048PHUSPSZip TEXT
SET VAR TBU048PIv06 INTEGER
SET VAR TBU048PIv07 INTEGER
SET VAR TBU048PIv08 INTEGER
SET VAR TBU048PHCountry TEXT
SET VAR TBU048PIv09 INTEGER
SET VAR TBU048PHPhoneNbr TEXT
SET VAR TBU048PIv10 INTEGER
SET VAR TBU048PHCellNbr TEXT
SET VAR TBU048PIv11 INTEGER
SET VAR TBU048PEMailAdr TEXT
SET VAR TBU048PIv12 INTEGER
SET VAR TBU048PPrvHOrgDate DATE
SET VAR TBU048PIv13 INTEGER
-- Columns from New version MbrCurHomeAdr
SET VAR TBU048NMbrNumber INTEGER
SET VAR TBU048NHAdrSource TEXT
SET VAR TBU048NIv01 INTEGER
SET VAR TBU048NHMainAdrLn TEXT
SET VAR TBU048NIv02 INTEGER
SET VAR TBU048NHExtraAdrLn TEXT
SET VAR TBU048NIv03 INTEGER
SET VAR TBU048NHCity TEXT
SET VAR TBU048NIv04 INTEGER
SET VAR TBU048NHStateUSPS TEXT
SET VAR TBU048NIv05 INTEGER
SET VAR TBU048NHUSPSZip TEXT
SET VAR TBU048NIv06 INTEGER
SET VAR TBU048NIv07 INTEGER
SET VAR TBU048NIv08 INTEGER
SET VAR TBU048NHCountry TEXT
SET VAR TBU048NIv09 INTEGER
SET VAR TBU048NHPhoneNbr TEXT
SET VAR TBU048NIv10 INTEGER
SET VAR TBU048NHCellNbr TEXT
SET VAR TBU048NIv11 INTEGER
SET VAR TBU048NEmailAdr TEXT
SET VAR TBU048NIv12 INTEGER
SET VAR TBU048NPrvHOrgDate DATE
SET VAR TBU048NIv13 INTEGER
-- VALUES FROM RegisterOFMbrs
SET VAR TBU048RCntCHomeAdr INTEGER -- This sould always be +1
SET VAR TBU048RCurHAudAct TEXT
SET VAR TBU048RCurHAudDate DATE
SET VAR TBU048RCurHAudTime TIME
SET VAR TBU048RCntPHomeAdr INTEGER
SET VAR TBU048RCntCEMailAd INTEGER
SET VAR TBU048RCntPEMailAd INTEGER
SET VAR TBU048RCurEMAct TEXT
SET VAR TBU048RCurEMDate DATE
SET VAR TBU048RCurEMTime TIME
SET VAR TBU048RIv01 INTEGER
SET VAR TBU048RIv02 INTEGER
SET VAR TBU048RIv03 INTEGER
SET VAR TBU048RIv04 INTEGER
SET VAR TBU048RIv05 INTEGER
SET VAR TBU048RIv06 INTEGER
SET VAR TBU048RIv07 INTEGER
SET VAR TBU048RIv08 INTEGER
SET VAR TBU048RIv09 INTEGER
SET VAR TBU048RIv10 INTEGER
SET VAR TBU048RIv11 INTEGER
SET VAR TBU048RIv12 INTEGER
SET VAR TBU048RIv13 INTEGER
-- SWITCH VALUES
SET VAR TBU048SwInsEMA INTEGER = 0
SET VAR TBU048SwInsPrv INTEGER = 0
--
SELECT MbrNumber, HAdrSource, HMainAdrLine, HExtraAdrLine, HCity,+
  HStateUSPSCode, HUSPSZipCode, HCountry, HPhoneNbr, HCellNbr,
EMailAdr,+
  HomeChgDate +
 INTO TBU048PMbrNumber, TBU048PHAdrSource IND TBU048PIv01,+
  TBU048PHMainAdrLn IND TBU048PIv02, TBU048PHExtraAdrLn IND
TBU048PIv03,+
  TBU048PHCity IND TBU048PIv04, TBU048PHStateUSPS IND TBU048PIv05,+
  TBU048PHUSPSZip IND TBU048PIv06, TBU048PHCountry IND TBU048PIv09,+
  TBU048PHPhoneNbr IND TBU048PIv10, TBU048PHCellNbr IND TBU048PIv11,+
  TBU048PEMailAdr IND TBU048PIv12, TBU048PPrvHOrgDate IND TBU048PIv13,+
  FROM MbrCurHomeAdr +
 WHERE CURRENT OF SYS_OLD
--
SELECT MbrNumber, HAdrSource, HMainAdrLine, HExtraAdrLine, HCity,+
  HStateUSPSCode, HUSPSZipCode, HCountry, HPhoneNbr, HCellNbr,
EMailAdr,+
  HomeChgDate +
 INTO TBU048NMbrNumber, TBU048NHAdrSource IND TBU048NIv01,+
  TBU048NHMainAdrLn IND TBU048NIv02, TBU048NHExtraAdrLn IND
TBU048NIv03,+
  TBU048NHCity IND TBU048NIv04, TBU048NHStateUSPS IND TBU048NIv05,+
  TBU048NHUSPSZip IND TBU048NIv06, TBU048NHCountry IND TBU048NIv09,+
  TBU048NHPhoneNbr IND TBU048NIv10, TBU048NHCellNbr IND TBU048NIv11,+
  TBU048NEmailAdr IND TBU048NIv12, TBU048NPrvHOrgDate IND TBU048NIv13,+
  FROM MbrCurHomeAdr +
 WHERE CURRENT OF SYS_NEW
--
SELECT CurHomeAdrCnt,CurHomeAudAction,CurHomeAudDate,CurHomeAudTime,+
  PrvHomeAdrCnt,CurEMailAdrCnt,PrvEMailAdrCnt,CurEMailAudAction,+
  CurEMailAudDate,CurEMailAudTime +
 INTO TBU048RCntCHomeAdr IND TBU048RIv01, TBU048RCurHAudAct IND
TBU048RIv02,+
  TBU048RCurHAudDate IND TBU048RIv03, TBU048RCurHAudTime IND
TBU048RIv04,+
  TBU048RCntPHomeAdr IND TBU048RIv05, TBU048RCntCEMailAd IND
TBU048RIv06,+
  TBU048RCntPEMailAd IND TBU048RIv07, TBU048RCurEMAct IND TBU048RIv08,+
  TBU048RCurEMDate IND TBU048RIv09, TBU048RCurEMTime IND TBU048RIv10, +
 FROM RegisterOfMbrs WHERE MbrNumber = .TBU048PMbrNumber

IF TBU048PHMainAdrLn <> .TBU048NHMainAdrLn +
   OR TBU048PHExtraAdrLn <> .TBU048NHExtraAdrLn +
   OR TBU048PHCity <> .TBU048NHCity OR +
   TBU048PHStateUSPS <> .TBU048NHStateUSPS +
   OR TBU048PHPhoneNbr <> .TBU048NHPhoneNbr +
   OR TBU048PHCellNbr <> .TBU048NHCellNbr OR TBU048PIv02 <> .TBU048NIv02
+
   OR TBU048PIv03 <> .TBU048NIv03 OR TBU048PIv04 <> .TBU048NIv04 +
   OR TBU048PIv05 <> .TBU048NIv05 OR TBU048PIv06 <> .TBU048NIv06 +
   OR TBU048PIv09 <> .TBU048NIv09 OR TBU048PIv10 <> .TBU048NIv10 +
   OR TBU048PIv11 <> .TBU048NIv11 THEN
  SET VAR TBI053FromOtherTrg INTEGER = 1
  INSERT INTO MbrPrvHomeAdr (MbrNumber, HAdrSource, HMainAdrLine,+
    HExtraAdrLine, HCity, HStateUSPSCode, HUSPSZipCode, HCountry,
HPhoneNbr,+
    HCellNbr, EMailAdr, PrvHomeOrgDate, PrvHomeAudAction,
PrvHomeAudDate) +
   VALUES (.TBU048PMbrNumber, .TBU048PHAdrSource, .TBU048PHMainAdrLn,+
    .TBU048PHExtraAdrLn, .TBU048PHCity, .TBU048PHStateUSPS,
.TBU048PHUSPSZip,+
    .TBU048PHCountry, .TBU048PHPhoneNbr, .TBU048PHCellNbr,
.TBU048PEMailAdr,+
    .TBU048PPrvHOrgDate, 'Chg ', .#DATE)
  SET VAR TBU048SwInsPrv = 1
  SET VAR TBU048RCntPHomeAdr = (1 + .TBU048RCntPHomeAdr)
ENDIF
IF TBU048PEMailAdr <> .TBU048NEmailAdr OR TBU048PIv12 <> .TBU048NIv12
THEN
  IF TBU048PEMailAdr IS NOT NULL THEN
    INSERT +
     INTO MbrPrvEMailAdr (MbrNumber, EMailAdr, PrvEMailAudAction,+
      PrvEMailAudDate) +
     VALUES (.TBU048PMbrNumber, .TBU048PEMailAdr, 'Chg ', .#DATE)
    SET VAR TBU048SwInsEMA = 1
    SET VAR TBU048RCntPEMailAd = (1 + .TBU048RCntPEMailAd)
  ENDIF
ENDIF
-- Fix potential column value problems
IF TBU048RCurEMDate IS NULL THEN
  SET VAR TBU048RCurEMDate=.TBU048RCurHAudDate
ENDIF
IF TBU048RCurEMTime IS NULL THEN
  SET VAR TBU048RCurEMTime=.TBU048RCurHAudTime
ENDIF
IF TBU048SwInsPrv = 1 OR TBU048SwInsEMA = 1 THEN
  UPDATE RegisterOfMbrs SET CurHomeAudAction = 'Chg ',+
    CurHomeAudDate = .#DATE, CurHomeAudTime = .#TIME,+
    PrvHomeAdrCnt = .TBU048RCntPHomeAdr, CurEMailAdrCnt = +
    (IFEXISTS(.TBU048NEmailAdr,1,0)), CurEMailAudAction= +
    (IFEXISTS(.TBU048NEmailAdr,'Chg ',.TBU048RCurEMAct)),
CurEMailAudDate= +
    (IFEXISTS(.TBU048NEmailAdr,.#DATE,.TBU048RCurEMDate)),
CurEMailAudTime= +
    (IFEXISTS(.TBU048NEmailAdr,.#TIME,.TBU048RCurEMTime)),+
    PrvEMailAdrCnt = .TBU048RCntPEMailAd WHERE MbrNumber =
.TBU048PMbrNumber
ENDIF
--
CLEAR VAR TBU048%
-- STP: TBUMbrCurHomeAdr v7.6 19-OCT-2010 By JRB. For Change of Home
Address
--  Insert audit records into MbrPrvHomeAdr, MbrPrvEMailAdr and
--  upDate counts and audit info on RegisterOfMbrs
RETURN

 << === End Before Update Trigger Code ==<<
 Note  only want to maintain records under certain circumstances. Note
special handling of NULL values via the indicator
variable values. 

Jim Bentley
American Celiac Society
[email protected]
tel: 1-504-737-3293

 

         

        From: Jim Belisle <[email protected]>
        To: RBASE-L Mailing List <[email protected]>
        Sent: Sat, March 26, 2011 8:11:07 PM
        Subject: [RBASE-L] - Re: [No Subject]
        
        
        

        Bernie,

         

        Thanks. That is what I needed.

         

        James Belisle

        
________________________________


        From: [email protected] [mailto: [email protected] ] On Behalf
Of jan johansen
        Sent: Saturday, March 26, 2011 7:14 PM
        To: RBASE-L Mailing List
        Subject: [RBASE-L] - Re: [No Subject]

         

        Jim,

         

        Since it doesn't look like it matters which column may be
updated just update your second table like this.

         

        UPDATE table2 SET +

             colname1 = colname1, +

             colname2 = colname2, +

             colname3 = colname3, +

             colname4 = colname4 +

        FROM table1, table2 +

        WHERE table2.linkcolumnid = table1.linkcolumnid

         

        Jan
         

        
         

                -----Original Message-----
                From: "Jim Belisle" <[email protected]>
                To: [email protected] (RBASE-L Mailing List)
                Date: Sat, 26 Mar 2011 15:59:33 -0500
                Subject: [RBASE-L] - [No Subject]

                I have two tables that have the same type information.

                When updating one table with a form, I want to be able
to update the other table at the same time. 

                Since there are 40 fields and I would not know which
field might be edited, what would be the best way to go about this? 

                 

                Would I have to have a compID on all FIELDS then have
the update command always update all fields? 

                Any suggestions would be appreciated. All fields are
text fields

                 

                 

                James Belisle

                 

 

Reply via email to