Bill,
It appears that EventD:EventId is not being set as a session variable which accounts for the blank string being returned in your example. The first line of your example:
'UpdateEvents?Event:SysID=' & p_web.GSV('EventD:EventID') & '&change_btn=change'
appears to be the correct call. Remember, there is no syntax checking on the variable save, so if you saved it as p_Web.SSV('EventID:EventId') then read it as EventD:EventID then it would return the null string since the variable cannot be found - kind of like using intrinsic variables - exceedingly easy to fall prey to a typing error.
What I do sometimes is to define it as a local variable, select it from the data table, and put quotes around it in the SSV and GSV statements. That ensures that I always use the same variable name.
I suggest putting a couple debugview calls or STOP() statements in the code using "cut and paste" to put the same code in there (i.e., STOP(p_Web.GSV('EventD:EventId')) - one where you save the variable and one when you reload it to make sure that a) the value is being saved and b) you are using the same name.
Cheers!
Rob Mikkelsen