$PBExportHeader$n_ds_cgibase.sru $PBExportComments$Base Simple Datastore forward global type n_ds_cgibase from datastore end type end forward global type n_ds_cgibase from datastore event pbw_setlistretrievearguments ( ) event pbw_setdetailretrievearguments ( ) event pbw_setdetailwebproperties ( ) event pbw_setlistwebproperties ( ) event pbw_setdetailinitialvalues ( ) event htmlcontextapplied pbm_dwnhtmlcontextapplied event pbw_postdetailhtmlcontextapplied ( string as_action ) event pbw_postlisthtmlcontextapplied ( string as_action ) event pbw_prelisthtmlgen ( ) event pbw_predetailhtmlgen ( ) end type global n_ds_cgibase n_ds_cgibase type variables public string #ListDataObject public string #DetailDataObject public string #leadingHTML="<html><body>" public string #trailingHTML="</body></html>" any __a_argvalue[20] string __s_argname[20] string __s_argtype[20] string is_sqlerrtext end variables forward prototypes public function string of_invokemethod (string as_method) public function long of_setargument (integer ai_position, any aa_value) public function string of_detaildata () public function long of_getarguments () public function string of_listdata () public function string of_detailinsertrow () end prototypes public function string of_invokemethod (string as_method); CHOOSE CASE as_method CASE "of_listdata"; RETURN of_listdata () CASE "of_detaildata" ; RETURN of_detaildata () CASE "of_detailinsertrow" ; RETURN of_detailinsertrow () CASE ELSE ; RETURN "Error in '" + Classname ( This ) + "'<br />Method '" + as_method +"' unknown" END CHOOSE end function public function long of_setargument (integer ai_position, any aa_value);__a_argvalue[ai_position] = aa_value return 1 end function public function string of_detaildata (); long ll_return any la_emtpy[] string ls_error="" /* assign dataobject and retrieve */ This.dataobject = #DetailDataObject This.event pbw_setdetailwebproperties( ) This.SetTransObject(SQLCA) // Reset and get Retrieval Arguments __a_argvalue = la_emtpy This.Event pbw_setdetailretrievearguments( ) ll_return = This.Retrieve ( & __a_argvalue[1], __a_argvalue[2], __a_argvalue[3], __a_argvalue[4], __a_argvalue[5], & __a_argvalue[6], __a_argvalue[7], __a_argvalue[8], __a_argvalue[9], __a_argvalue[10], & __a_argvalue[11], __a_argvalue[12], __a_argvalue[13], __a_argvalue[14], __a_argvalue[15], & __a_argvalue[16], __a_argvalue[17], __a_argvalue[18], __a_argvalue[19], __a_argvalue[20] ) /* Now let's perfrom the Action */ string ls_context string ls_action cgienv.of_getParamValue( #DetailDataObject+'_action', ls_action ) If len ( ls_action ) > 0 then cgienv.of_getParamValue( #DetailDataObject+'_context', ls_context ) /* This performs an Update, if action is Update */ log.of_addmessage( 9 , "SetHTMLAction....on "+ String(RowCount())+ "rows.") log.of_addmessage( 9 , "Action is " + ls_action ) ll_return = This.setHTMLAction( ls_action, ls_context) If ll_return < 0 Then ls_error = is_sqlerrtext + '<br />' log.of_addmessage( 9 , "Failure in SetHTMLAction. Return was "+String(ll_Return)+'<br />') log.of_addmessage( 9 , "HTMLAction: " + ls_action+'<br />') log.of_addmessage( 9 , "HTMLContext: "+ls_context+'<br />') log.of_addmessage( 9 , "HTMLContext: "+sqlca.SQLErrText+'<br />') Else This.EVENT pbw_postdetailhtmlcontextapplied ( ls_action ) Choose Case ls_action Case "DeleteRow" ll_return = This.Update () End Choose End If End If /* Generate HTML page to return */ This.EVENT pbw_predetailhtmlgen () return & #leadingHTML + & ls_error +& This.Object.DataWindow.data.HTML +& #trailingHTML end function public function long of_getarguments ();String ls_empty[20] // Initialize instance array __s_argname = ls_empty __s_argtype = ls_empty string ls_table_arguments long ll_pos_tab long ll_arg_start = 1 long ll_i = 0 ls_table_arguments = this.Describe("Datawindow.Table.Arguments") IF ls_table_arguments = "!" Then Return -1 ll_pos_tab = Pos ( ls_table_arguments , "~t" ) do while ll_pos_tab > 0 ll_i++ __s_argname[ll_i] = Mid ( ls_table_arguments , ll_arg_start, ll_pos_tab - ll_arg_start ) ll_arg_start = Pos ( ls_table_arguments , char(10) , ll_pos_tab + 1 ) if ll_arg_start > 0 then __s_argtype[ll_i] = Mid ( ls_table_arguments , ll_pos_tab + 1 , ll_arg_start - ll_pos_tab - 1) ll_arg_start++ ll_pos_tab = Pos ( ls_table_arguments , "~t" , ll_arg_start ) else __s_argtype[ll_i] = Mid ( ls_table_arguments , ll_pos_tab + 1 ) ll_pos_tab = 0 end if loop return ll_i end function public function string of_listdata (); long ll_return any la_emtpy[] /* Create datastore, assign dataobject, and retrieve */ This.dataobject = #ListDataObject This.event pbw_setlistwebproperties( ) This.SetTransObject(SQLCA) // Reset and get Retrieval Arguments __a_argvalue = la_emtpy This.Event pbw_setlistretrievearguments( ) ll_return = This.Retrieve ( & __a_argvalue[1], __a_argvalue[2], __a_argvalue[3], __a_argvalue[4], __a_argvalue[5], & __a_argvalue[6], __a_argvalue[7], __a_argvalue[8], __a_argvalue[9], __a_argvalue[10], & __a_argvalue[11], __a_argvalue[12], __a_argvalue[13], __a_argvalue[14], __a_argvalue[15], & __a_argvalue[16], __a_argvalue[17], __a_argvalue[18], __a_argvalue[19], __a_argvalue[20] ) /* Now let's perfrom the Action */ string ls_context string ls_action cgienv.of_getParamValue( #ListDataObject+'_action', ls_action ) If len ( ls_action ) > 0 then log.of_addmessage( 1, ls_Action) cgienv.of_getParamValue( #ListDataObject+'_context', ls_context ) /* This performs an Update, if action is Update */ log.of_addmessage( 1 , "SetHTMLAction....on "+ String(RowCount())+ "rows.") ll_return = This.setHTMLAction( ls_action, ls_context) If ll_return < 0 Then log.of_addmessage( 1 , "Failure in SetHTMLAction. Return was "+String(ll_Return)) Else This.EVENT pbw_postlisthtmlcontextapplied ( ls_action ) If ls_action = "Update" Then // This is done because of a change for a foreign key forces also to reselect foreign key's table data values. // A change of a catagoiy-Id implies that also the category text needs to be refreshed and send back ll_return = This.Retrieve ( & __a_argvalue[1], __a_argvalue[2], __a_argvalue[3], __a_argvalue[4], __a_argvalue[5], & __a_argvalue[6], __a_argvalue[7], __a_argvalue[8], __a_argvalue[9], __a_argvalue[10], & __a_argvalue[11], __a_argvalue[12], __a_argvalue[13], __a_argvalue[14], __a_argvalue[15], & __a_argvalue[16], __a_argvalue[17], __a_argvalue[18], __a_argvalue[19], __a_argvalue[20] ) End if End If End If /* Generate HTML page to return */ This.EVENT pbw_prelisthtmlgen () return & #leadingHTML + & This.Object.DataWindow.data.HTML +& #trailingHTML end function public function string of_detailinsertrow ();/* Assign dataobject and insert row */ This.dataobject = #DetailDataObject This.event pbw_setdetailwebproperties( ) This.SetTransObject(SQLCA) This.InsertRow(0) This.Event pbw_setdetailinitialvalues( ) This.Modify ( "b_delete.Enabled='no' b_update.Text='Save'") /* Generate HTML page to return */ This.EVENT pbw_predetailhtmlgen () return & #leadingHTML + & This.Object.DataWindow.data.HTML +& #trailingHTML end function on n_ds_cgibase.create call super::create TriggerEvent( this, "constructor" ) end on on n_ds_cgibase.destroy TriggerEvent( this, "destructor" ) call super::destroy end on event dberror;This.is_sqlerrtext = sqlerrtext end event
- Sources
- pb9webeasy
- PBL
- n_ds_cgibase.sru
File: n_ds_cgibase.sru
Size: 7783
Date: Sat, 08 Dec 2007 15:38:28 +0100
Size: 7783
Date: Sat, 08 Dec 2007 15:38:28 +0100
- datastore n_ds_cgibase(sru)