View previous topic :: View next topic
|
Author |
Message |
rameyshkanthan v
New User
Joined: 15 Nov 2013 Posts: 10 Location: India
|
|
|
|
Hi All,
I am new to ISPF/REXX.
I wrote a program to insert,modify,delete a table row thru panel.
All functionality are working fine but when I try to update a key field of my table,the updated one is getting inserted as a new row. I used TBMOD function for this.
Here is my code , Tablename : TSTABL1 Key: Keyfld Namefield: name1 name2 name3
Code: |
'TBOPEN 'TSTABL1''
cursor = 0
do forever
option = ' '
'TBTOP 'TSTABL1''
'TBSKIP 'TSTABL1' NUMBER('cursor')'
'TBDISPL 'TSTABL1' PANEL(RANE001)'
if RC = 8 then leave
var = ZTDSELS
if var > 0 then do
do o = 1 to var
'CONTROL DISPLAY SAVE'
call tab_handle
'CONTROL DISPLAY RESTORE'
if ZTDSELS = 1 then nop
else 'TBDISPL 'TSTABL1''
end
end
end
'TBCLOSE 'TSTABL1''
exit
/*-----------------------BEGIN PROCEDURES-----------------------------*/
tab_handle:
select
when option = 'I' then do
'ADDPOP'
'DISPLAY PANEL(RANE002)'
if RC = 0 then 'TBADD 'TSTABL1''
'REMPOP'
end
when option = 'D' then do
'ADDPOP'
'DISPLAY PANEL(RANE003)'
if DELOK = 'Y' then 'TBDELETE 'TSTABL1''
'REMPOP'
DELOK = 'N'
end
when option = 'M' then do
'ADDPOP'
'DISPLAY PANEL(RANE004)'
if RC = 0 then 'TBMOD 'TSTABL1''
'REMPOP'
end
otherwise nop
end
return |
Please clarify whether it can be done.
CODE tags added |
|
Back to top |
|
|
expat
Global Moderator
Joined: 14 Mar 2007 Posts: 8797 Location: Welsh Wales
|
|
|
|
Not sure if I remember correctly, but you may have to delete the old record and insert the new record if you are updating a key variable.
also, please learn very quickly to use the code tags - shown below
Code: |
[code]
your code goes here
[/code] |
|
|
Back to top |
|
|
Akatsukami
Global Moderator
Joined: 03 Oct 2009 Posts: 1788 Location: Bloomington, IL
|
|
|
|
TBMOD, IMNSHO, is a dangerous thing to use, as there are too many assumptions made so that it will never fail; it's better to use TBPUT, check the return code, and then use TBDELETE/TBADD if necessary. |
|
Back to top |
|
|
daveporcelan
Active Member
Joined: 01 Dec 2006 Posts: 792 Location: Pennsylvania
|
|
|
|
You can not 'update' the key fields.
If you want to let the user think that is what is being done, then fine.
You will need to keep track of the old key, then do a TBDELETE/TBADD as stated above.
I however do not allow the KEY fields to be updatable on the screen.
I make the user do the Add/Delete so that they understand the Database better.
There is an alternative. You can TBCREATE the table with out any key fields.
This way you can use a TBPUT which behaves like this (from the manual):
Quote: |
For tables without keys, the row pointed to by the CRP is always updated. |
|
|
Back to top |
|
|
rameyshkanthan v
New User
Joined: 15 Nov 2013 Posts: 10 Location: India
|
|
|
|
Thanks all.
I will go with daveporeclan view,"I however do not allow the KEY fields to be updatable on the screen.
I make the user do the Add/Delete so that they understand the Database better."
|
|
Back to top |
|
|
|