I have successfully implemented a "Query By Example" call from a button on my data entry/query form.


I am, however, having problems implementing an Update (Modify) statement.

The script for the Update button uses global variables to hold the value of each field within a row at the time that row is fetched (via "Query", "Next" or "Previous"). These (saved) variables have a prefix of "s_" (ie. s_city, s_state, s_zip, etc.).

The script also uses local variables to hold the value of each field at the time the update is executed. These (current) variables have a prefix of "c_" (ie. c_city, c_state, c_zip, etc.).

Functionality within a "mouseUp" handler compares the "saved" value of each field to its "current" value, via a series of if/then/else statements and places the elements of a SQL Update statement into "tSQLQuery".

I have successfully tested the resulting syntax against my database, via isql.

However, when I attempt to execute modification of a field (or fields) from the form, the update fails - each and every time.

The triggering mechanism within my script is expressed as:

"revSetSQLOfQuery "PeopleUpdate", tSQLQuery"

I have also tested with the "revExecuteSQL" call.

Is there a better means of executing the update? How should I approach "Add" button functionality?

Your suggestions are most sincerely appreciated.



Melvin Cox


-----------------------------------Update_Script---------------------------------------


on mouseUp

-- declare 'saved' variables (global)

 global s_pid,s_fname,s_mname,s_lname,s_address1,s_address2,s_city, \
     s_state,s_zip,s_country,s_affiliation,s_title,s_phone,s_home_ph, \
     s_fax,s_mobile,s_email,s_note,s_last_update,s_active

-- declare 'current' variables (local)

 global c_pid,c_fname,c_mname,c_lname,c_address1,c_address2,c_city, \
     c_state,c_zip,c_country,c_affiliation,c_title,c_phone,c_home_ph, \
     c_fax,c_mobile,c_email,c_note,c_last_update,c_active

-- save values into (c)urrent variables

 put field "pid" into c_pid
 put field "fname" into c_fname
 put field "mname" into c_mname
 put field "lname" into c_lname
 put field "address1" into c_address1
 put field "address2" into c_address2
 put field "city" into c_city
 put field "state" into c_state
 put field "zip" into c_zip
 put field "country" into c_country
 put field "affiliation" into c_affiliation
 put field "title" into c_title
 put field "phone" into c_phone
 put field "home_ph" into c_home_ph
 put field "fax" into c_fax
 put field "mobile" into c_mobile
 put field "email" into c_email
 put field "note" into c_note
 put field "last_update" into c_last_update
 put field "active" into c_active

-- Build SQL Statement

 put "UPDATE people SET" \
     into tSQLQuery

 if s_pid <> c_pid
 then

-- Prevent update of primary key

put "ERROR! The keyfield can't be modified. Use ADD to insert a new record!"
pass mouseUp
end if


 if s_fname <> c_fname
 then
   put " fname = " after tSQLQuery
   put "'" & field "fname" & "'" after tSQLQuery
 end if

 if s_mname <> c_mname
 then
   if s_fname <> c_fname
   then
     put "," after tSQLQuery
   end if
   put " mname = " after tSQLQuery
   put "'" & field "mname" & "'" after tSQLQuery
 end if

 if s_lname <> c_lname
 then
   if s_fname <> c_fname \
       or s_mname <> c_mname
   then
     put "," after tSQLQuery
   end if
   put " lname = " after tSQLQuery
   put "'" & field "lname" & "'" after tSQLQuery
 end if

 if s_address1 <> c_address1
 then
   if s_fname <> c_fname \
       or s_mname <> c_mname \
       or s_lname <> c_lname
   then
     put "," after tSQLQuery
   end if
   put " address1 = " after tSQLQuery
   put "'" & field "address1" & "'" after tSQLQuery
 end if

 if s_address2 <> c_address2
 then
   if s_fname <> c_fname \
       or s_mname <> c_mname \
       or s_lname <> c_lname \
       or s_address1 <> c_address1
   then
     put "," after tSQLQuery
   end if
   put " address2 = " after tSQLQuery
   put "'" & field "address2" & "'" after tSQLQuery
 end if

 if s_city <> c_city
 then
   if s_fname <> c_fname \
       or s_mname <> c_mname \
       or s_lname <> c_lname \
       or s_address1 <> c_address1 \
       or s_address2 <> c_address2
   then
     put "," after tSQLQuery
   end if
   put " city = " after tSQLQuery
   put "'" & field "city" & "'" after tSQLQuery
 end if

 if s_state <> c_state
 then
   if s_fname <> c_fname \
       or s_mname <> c_mname \
       or s_lname <> c_lname \
       or s_address1 <> c_address1 \
       or s_address2 <> c_address2 \
       or s_city <> c_city
   then
     put "," after tSQLQuery
   end if
   put " state = " after tSQLQuery
   put "'" & field "state" & "'" after tSQLQuery
 end if

 if s_zip <> c_zip
 then
   if s_fname <> c_fname \
       or s_mname <> c_mname \
       or s_lname <> c_lname \
       or s_address1 <> c_address1 \
       or s_address2 <> c_address2 \
       or s_city <> c_city \
       or s_state <> c_state
   then
     put "," after tSQLQuery
   end if
   put " zip = " after tSQLQuery
   put "'" & field "zip" & "'" after tSQLQuery
 end if

 if s_country <> c_country
 then
   if s_fname <> c_fname \
       or s_mname <> c_mname \
       or s_lname <> c_lname \
       or s_address1 <> c_address1 \
       or s_address2 <> c_address2 \
       or s_city <> c_city \
       or s_state <> c_state \
       or s_zip <> c_zip
   then
     put "," after tSQLQuery
   end if
   put " country = " after tSQLQuery
   put "'" & field "country" & "'" after tSQLQuery
 end if

 if s_affiliation <> c_affiliation
 then
   if s_fname <> c_fname \
       or s_mname <> c_mname \
       or s_lname <> c_lname \
       or s_address1 <> c_address1 \
       or s_address2 <> c_address2 \
       or s_city <> c_city \
       or s_state <> c_state \
       or s_zip <> c_zip \
       or s_country <> c_country
   then
     put "," after tSQLQuery
   end if
   put " affiliation = " after tSQLQuery
   put "'" & field "affiliation" & "'" after tSQLQuery
 end if

 if s_title <> c_title
 then
   if s_fname <> c_fname \
       or s_mname <> c_mname \
       or s_lname <> c_lname \
       or s_address1 <> c_address1 \
       or s_address2 <> c_address2 \
       or s_city <> c_city \
       or s_state <> c_state \
       or s_zip <> c_zip \
       or s_country <> c_country \
       or s_affiliation <> c_affiliation
   then
     put "," after tSQLQuery
   end if
   put " title = " after tSQLQuery
   put "'" & field "title" & "'" after tSQLQuery
 end if

 if s_phone <> c_phone
 then
   if s_fname <> c_fname \
       or s_mname <> c_mname \
       or s_lname <> c_lname \
       or s_address1 <> c_address1 \
       or s_address2 <> c_address2 \
       or s_city <> c_city \
       or s_state <> c_state \
       or s_zip <> c_zip \
       or s_country <> c_country \
       or s_affiliation <> c_affiliation \
       or s_title <> c_title
   then
     put "," after tSQLQuery
   end if
   put " phone = " after tSQLQuery
   put "'" & field "phone" & "'" after tSQLQuery
 end if

 if s_home_ph <> c_home_ph
 then
   if s_fname <> c_fname \
       or s_mname <> c_mname \
       or s_lname <> c_lname \
       or s_address1 <> c_address1 \
       or s_address2 <> c_address2 \
       or s_city <> c_city \
       or s_state <> c_state \
       or s_zip <> c_zip \
       or s_country <> c_country \
       or s_affiliation <> c_affiliation \
       or s_title <> c_title \
       or s_phone <> c_phone
   then
     put "," after tSQLQuery
   end if
   put " home_ph = " after tSQLQuery
   put "'" & field "home_ph" & "'" after tSQLQuery
 end if

 if s_fax <> c_fax
 then
   if s_fname <> c_fname \
       or s_mname <> c_mname \
       or s_lname <> c_lname \
       or s_address1 <> c_address1 \
       or s_address2 <> c_address2 \
       or s_city <> c_city \
       or s_state <> c_state \
       or s_zip <> c_zip \
       or s_country <> c_country \
       or s_affiliation <> c_affiliation \
       or s_title <> c_title \
       or s_phone <> c_phone \
       or s_home_ph <> c_home_ph
   then
     put "," after tSQLQuery
   end if
   put " fax = " after tSQLQuery
   put "'" & field "fax" & "'" after tSQLQuery
 end if

 if s_mobile <> c_mobile
 then
   if s_fname <> c_fname \
       or s_mname <> c_mname \
       or s_lname <> c_lname \
       or s_address1 <> c_address1 \
       or s_address2 <> c_address2 \
       or s_city <> c_city \
       or s_state <> c_state \
       or s_zip <> c_zip \
       or s_country <> c_country \
       or s_affiliation <> c_affiliation \
       or s_title <> c_title \
       or s_phone <> c_phone \
       or s_home_ph <> c_home_ph \
       or s_fax <> c_fax
   then
     put "," after tSQLQuery
   end if
   put " mobile = " after tSQLQuery
   put "'" & field "mobile" & "'" after tSQLQuery
 end if

 if s_email <> c_email
 then
   if s_fname <> c_fname \
       or s_mname <> c_mname \
       or s_lname <> c_lname \
       or s_address1 <> c_address1 \
       or s_address2 <> c_address2 \
       or s_city <> c_city \
       or s_state <> c_state \
       or s_zip <> c_zip \
       or s_country <> c_country \
       or s_affiliation <> c_affiliation \
       or s_title <> c_title \
       or s_phone <> c_phone \
       or s_home_ph <> c_home_ph \
       or s_fax <> c_fax \
       or s_mobile <> c_mobile
   then
     put "," after tSQLQuery
   end if
   put " email = " after tSQLQuery
   put "'" & field "email" & "'" after tSQLQuery
 end if

 if s_note <> c_note
 then
   if s_fname <> c_fname \
       or s_mname <> c_mname \
       or s_lname <> c_lname \
       or s_address1 <> c_address1 \
       or s_address2 <> c_address2 \
       or s_city <> c_city \
       or s_state <> c_state \
       or s_zip <> c_zip \
       or s_country <> c_country \
       or s_affiliation <> c_affiliation \
       or s_title <> c_title \
       or s_phone <> c_phone \
       or s_home_ph <> c_home_ph \
       or s_fax <> c_fax \
       or s_mobile <> c_mobile \
       or s_email <> c_email
   then
     put "," after tSQLQuery
   end if
   put " note = " after tSQLQuery
   put "'" & field "note" & "'" after tSQLQuery
 end if

 if s_last_update <> c_last_update
 then
   if s_fname <> c_fname \
       or s_mname <> c_mname \
       or s_lname <> c_lname \
       or s_address1 <> c_address1 \
       or s_address2 <> c_address2 \
       or s_city <> c_city \
       or s_state <> c_state \
       or s_zip <> c_zip \
       or s_country <> c_country \
       or s_affiliation <> c_affiliation \
       or s_title <> c_title \
       or s_phone <> c_phone \
       or s_home_ph <> c_home_ph \
       or s_fax <> c_fax \
       or s_mobile <> c_mobile \
       or s_email <> c_email
   then
     put "," after tSQLQuery
   end if
   put " last_update = " after tSQLQuery
   put "'" & field "last_update" & "'" after tSQLQuery
 end if

 if s_active <> c_active
 then
   if s_fname <> c_fname \
       or s_mname <> c_mname \
       or s_lname <> c_lname \
       or s_address1 <> c_address1 \
       or s_address2 <> c_address2 \
       or s_city <> c_city \
       or s_state <> c_state \
       or s_zip <> c_zip \
       or s_country <> c_country \
       or s_affiliation <> c_affiliation \
       or s_title <> c_title \
       or s_phone <> c_phone \
       or s_home_ph <> c_home_ph \
       or s_fax <> c_fax \
       or s_mobile <> c_mobile \
       or s_email <> c_email \
       or s_last_update <> c_last_update
   then
     put "," after tSQLQuery
   end if
   put " active = " after tSQLQuery
   put "'" & field "active" & "'" after tSQLQuery
 end if

 put " WHERE 0=0" after tSQLQuery
 put " and pid = " after tSQLQuery
 put ' & field "pid" & ' after tSQLQuery

-- Set tSQLQuery to empty if all fields are empty

 if the length of field "pid" = 0  \
     and the length of field "fname" = 0 \
     and the length of field "mname" = 0 \
     and the length of field "lname" = 0 \
     and the length of field "address1" = 0 \
     and the length of field "address2" = 0 \
     and the length of field "city" = 0 \
     and the length of field "state" = 0 \
     and the length of field "zip" = 0 \
     and the length of field "country" = 0 \
     and the length of field "affiliation" = 0 \
     and the length of field "title" = 0 \
     and the length of field "phone" = 0 \
     and the length of field "home_ph" = 0 \
     and the length of field "fax" = 0 \
     and the length of field "mobile" = 0 \
     and the length of field "email" = 0 \
     and the length of field "active" = 0
 then
   put empty into tSQLQuery
 end if

revSetSQLOfQuery "PeopleUpdate", tSQLQuery

-- Test for errors

 if revDatabaseConnectResult (PeopleUpdate) is empty
 then
   put "Update Successful"
 else
   put "Sorry, Update Failed"
 end if

end mouseUp

_________________________________________________________________
Share holiday photos without swamping your Inbox. Get MSN Extra Storage now! http://join.msn.com/?PAGE=features/es


_______________________________________________
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to