Re: Use of ROWID to update a record?
Posted in 1997
Take a look at the following code. I use the ROWID to update my table. I
hope this helps.
DATABASE template
GLOBALS
DEFINE ttmp RECORD LIKE tmp.*,
row_id INTEGER,
answer CHAR(1), {used TO answer PROMPTs}
where_text CHAR(200),
query_text CHAR(250)
END GLOBALS
MAIN
clear screen
DEFER interrupt {stops user from entering operating
system}
WHENEVER error continue {works with above}
OPTIONS INPUT WRAP {don't leave input after last field}
OPEN FORM screen1 FROM "tmp"
DISPLAY FORM screen1
MENU "MAIN"
COMMAND "Query" "Searches the active database table"
CONSTRUCT where_text
ON tmp.* FROM tmp.*
LET query_text = "select rowid, * from tmp where ", where_text
CLIPPED
PREPARE prep_text FROM query_text
DECLARE query_1 SCROLL CURSOR FOR prep_text
OPEN query_1
FETCH FIRST query_1 INTO row_id,ttmp.*
IF status = NOTFOUND THEN
CLEAR FORM
ERROR "No data satisfies query"
INITIALIZE ttmp.* TO NULL
ELSE
DISPLAY BY NAME ttmp.*
END IF
COMMAND "Next" "Shows the next row in the current list"
FETCH NEXT query_1 INTO row_id,ttmp.*
IF status = NOTFOUND THEN
ERROR "No more data in this direction"
FETCH LAST query_1 INTO row_id,ttmp.*
END IF
DISPLAY BY NAME ttmp.*
COMMAND "Previous" "Shows the Previous row in the current list"
FETCH PREVIOUS query_1 INTO row_id,ttmp.*
IF status = NOTFOUND THEN
ERROR "No more data in this direction"
FETCH FIRST query_1 INTO row_id,ttmp.*
END IF
DISPLAY BY NAME ttmp.*
COMMAND "Add" "Adds a row to the active database table"
CALL first_two()
CLEAR FORM
INITIALIZE ttmp.* TO NULL
DISPLAY "Press ESC to add new row" AT 1,1
LET ttmp.t_key = 0
INPUT BY NAME ttmp.* WITHOUT DEFAULTS
INSERT INTO tmp VALUES (ttmp.*)
LET ttmp.t_key = SQLCA.SQLERRD[2]
LET row_id = SQLCA.SQLERRD[6]
DISPLAY BY NAME ttmp.t_key
OPEN query_1
FETCH LAST query_1 into row_id,ttmp.*
COMMAND "Update" "Changes a row in the active database table"
IF ttmp.t_key IS NULL THEN
ERROR "No row has been selected"
ELSE
CALL first_two()
DISPLAY "Press ESC to add new row" AT 1,1
INPUT BY NAME ttmp.* WITHOUT DEFAULTS
UPDATE tmp SET tmp.* = ttmp.*
WHERE rowid = row_id
END IF
COMMAND "Remove" "Deletes a row from the active database table"
IF ttmp.t_key IS NULL THEN
ERROR "No row has been selected"
ELSE
CALL first_two()
PROMPT "Are you sure you want to delete this row? "
FOR CHAR answer
IF answer MATCHES "[Yy]" THEN
DELETE FROM tmp
WHERE rowid = row_id
CLEAR FORM
ERROR "Row deleted"
INITIALIZE ttmp.* TO NULL
OPEN query_1
END IF
END IF
COMMAND "Exit" "Exit form"
CLEAR SCREEN
EXIT PROGRAM
END MENU
END MAIN
FUNCTION first_two()
DISPLAY "" AT 1,1
DISPLAY "" AT 2,1
END FUNCTION
begin 600 template.txt
M1$%404)!4T4@=&5M<&QA=&4-"@T*1TQ/0D%,4PT*(" @1$5&24Y%('1T;7 @
M4D5#3U)$($Q)2T4@=&UP+BHL#0H)("!R;W=?:60@"4E.5$5'15(L#0H@(" @
M(" @(" @86YS=V5R(" @(" @("!#2$%2*#$I+" @(" @(" @(" @("![=7-E
M9"!43R!A;G-W97(@4%)/35!4<WT-"B @(" @(" @("!W:&5R95]T97AT(" @
M($-(05(H,C P*2P-"B @(" @(" @("!Q=65R>5]T97AT(" @($-(05(H,C4P
M*0T*14Y$($=,3T)!3%,-"@T*34%)3@T*(" @8VQE87(@<V-R965N#0H@("!$
M149%4B!I;G1E<G)U<'0@(" @(" @(" @(" @(" @(" @>W-T;W!S('5S97(@
M9G)O;2!E;G1E<FEN9R!O<&5R871I;F<@<WES=&5M?0T*(" @5TA%3D5615(@
M97)R;W(@8V]N=&EN=64@(" @(" @(" @('MW;W)K<R!W:71H(&%B;W9E?0T*
M(" @3U!424].4R!)3E!55"!74D%0(" @(" @(" @(" @(" @('MD;VXG="!L
M96%V92!I;G!U="!A9G1E<B!L87-T(&9I96QD?0T*#0H@("!/4$5.($9/4DT@
M<V-R965N,2!&4D]-(")T;7 B#0H@("!$25-03$%9($9/4DT@<V-R965N,0T*
M#0H@("!-14Y5(")-04E.(@T*(" @(" @0T]-34%.1" B475E<GDB(")396%R
M8VAE<R!T:&4@86-T:79E(&1A=&%B87-E('1A8FQE(@T*(" @(" @(" @0T].
M4U1254-4('=H97)E7W1E>'0-"B @(" @(" @(" @($].('1M<"XJ($923TT@
M=&UP+BH-"B @(" @(" @($Q%5"!Q=65R>5]T97AT(#T@(G-E;&5C="!R;W=I
M9"P@*B!F<F]M('1M<"!W:&5R92 B+"!W:&5R95]T97AT($-,25!0140-"B @
M(" @(" @(%!215!!4D4@<')E<%]T97AT($923TT@<75E<GE?=&5X= T*(" @
M(" @(" @1$5#3$%212!Q=65R>5\\Q(%-#4D],3"!#55)33U(@1D]2('!R97!?
M=&5X= T*(" @(" @(" @3U!%3B!Q=65R>5\\Q#0H@(" @(" @("!&151#2"!&
M25)35"!Q=65R>5\\Q($E.5$\\@<F]W7VED+'1T;7 N*@T*(" @(" @(" @248@
M<W1A='5S(#T@3D]41D]53D0@5$A%3@T*(" @(" @(" @(" @0TQ%05(@1D]2
M30T*(" @(" @(" @(" @15)23U(@(DYO(&1A=&$@<V%T:7-F:65S('%U97)Y
M(@T*(" @(" @(" @(" @24Y)5$E!3$E:12!T=&UP+BH@5$\\@3E5,3 T*(" @
M(" @(" @14Q310T*(" @(" @(" @(" @1$E34$Q!62!"62!.04U%('1T;7 N
M*@T*(" @(" @(" @14Y$($E�H@(" @(" @(" -"B @(" @($-/34U!3D0@
M(DYE>'0B(")3:&]W<R!T:&4@;F5X="!R;W<@:6X@=&AE(&-U<G)E;G0@;&ES
M="(-"B @(" @(" @($9%5$-(($Y%6%0@<75E<GE?,2!)3E1/(')O=U]I9"QT
M=&UP+BH-"B @(" @(" @($E&('-T871U<R ]($Y/5$9/54Y$(%1(14X-"B @
M(" @(" @(" @($524D]2(").;R!M;W)E(&1A=&$@:6X@=&AI<R!D:7)E8W1I
M;VXB#0H@(" @(" @(" @("!&151#2"!,05-4('%U97)Y7S$@24Y43R!R;W=?
M:60L='1M<"XJ#0H@(" @(" @("!%3D0@248-"B @(" @(" @($1)4U!,05D@
M0ED@3D%-12!T=&UP+BH-"@T*(" @(" @0T]-34%.1" B4')E=FEO=7,B(")3
M:&]W<R!T:&4@4')E=FEO=7,@<F]W(&EN('1H92!C=7)R96YT(&QI<W0B#0H@
M(" @(" @("!&151#2"!04D5624]54R!Q=65R>5\\Q($E.5$\\@<F]W7VED+'1T
M;7 N*@T*(" @(" @(" @248@<W1A='5S(#T@3D]41D]53D0@5$A%3@T*(" @
M(" @(" @(" @15)23U(@(DYO(&UO<F4@9&%T82!I;B!T:&ES(&1I<F5C=&EO
M;B(-"B @(" @(" @(" @($9%5$-(($9)4E-4('%U97)Y7S$@24Y43R!R;W=?
M:60L='1M<"XJ#0H@(" @(" @("!%3D0@248-"B @(" @(" @($1)4U!,05D@
M0ED@3D%-12!T=&UP+BH-"@T*(" @(" @0T]-34%.1" B061D(B B061D<R!A
M(')O=R!T;R!T:&4@86-T:79E(&