S
Sergiu Balauca
Guest
I am trying to update a record in a database by tracking changes of a temp-table. How should I modify my code, in order to do that? I am able to create records, by using the following code: DEFINE TEMP-TABLE t_Customer BEFORE-TABLE b_customer FIELD custNum AS INTEGER FIELD custName AS CHAR INDEX idx1 IS UNIQUE PRIMARY Custnum. DEFINE DATASET dsCust FOR t_Customer. DEFINE DATA-SOURCE pds FOR Testare.Client KEYS(custNum,custNum). BUFFER t_Customer:ATTACH-DATA-SOURCE(DATA-SOURCE pds:HANDLE,"custNum,custNum"). TEMP-TABLE t_Customer:TRACKING-CHANGES = TRUE. CREATE t_Customer. ASSIGN t_Customer.custNum = NEXT-VALUE(seqClient) t_Customer.custName = "test" . TEMP-TABLE t_Customer:TRACKING-CHANGES = FALSE. DEFINE VAR beforeBuffer AS HANDLE. DEFINE VAR beforeQuery AS HANDLE. DEFINE VAR dsCustChanges AS HANDLE. CREATE DATASET dsCustChanges. dsCustChanges:CREATE-LIKE(DATASET dsCust:HANDLE). dsCustChanges:GET-BUFFER-HANDLE(1):ATTACH-DATA-SOURCE(DATA-SOURCE pds:HANDLE,"custNum,custNum"). dsCustChanges:GET-CHANGES(DATASET dsCust:HANDLE, TRUE). beforeBuffer = dsCustChanges:GET-BUFFER-HANDLE(1):BEFORE-BUFFER. DO TRANSACTION: IF VALID-HANDLE(BeforeBuffer) THEN DO: CREATE QUERY beforeQuery. beforeQuery:ADD-BUFFER(beforeBuffer). beforeQuery:QUERY-PREPARE("FOR EACH " + beforebuffer:NAME). beforeQuery:QUERY-OPEN(). beforeQuery:GET-FIRST(). DO WHILE NOT beforeQuery:QUERY-OFF-END: MESSAGE beforeBuffer:BUFFER-FIELD ("custName"):BUFFER-VALUE VIEW-AS ALERT-BOX. MESSAGE beforeBuffer:ROW-STATE. beforebuffer:SAVE-ROW-CHANGES(1). IF beforebuffer:ERROR THEN DO: MESSAGE "error" VIEW-AS ALERT-BOX. beforebuffer:REJECTED = TRUE. END. beforeQuery:GET-NEXT(). END. DELETE OBJECT beforeQuery. END. END.
Continue reading...
Continue reading...