lparameters tvDataIn, tcEndOfDay local lcRetVal, llEndOfDay #define C_SQUOTE ['] llEndOfDay = iif(pcount() < 2, .F., upper(trim(tcEndOfDay))=='ENDOFDAY') do case case vartype(tvDataIn)='D' &&date if empty(tvDataIn) or isblank(tvDataIn) lcRetVal='NULL' else lcRetVal="'"+dtos(tvDataIn) + iif(llEndOfDay, " 23:59:59'" ," 00:00:00'") endif case vartype(tvDataIn)='T' &&time if empty(tvDataIn) or isblank(tvDataIn) lcRetVal='NULL' else lcRetVal="'"+dtos(ttod(tvDataIn))+' '+ttoc(tvDataIn, 2)+"'" lcRetVal=strtran(lcRetVal, 'A.M.', 'AM', -1, -1, 1) lcRetVal=strtran(lcRetVal, 'P.M.', 'PM', -1, -1, 1) endif case vartype(tvDataIn)='C' &&character *-jt- if at("'", tvDataIn)>0 and at('"', tvDataIn)>0 *-jt- lcRetVal='"'+strtran(tvDataIn, '"','""')+'"' *-jt- else *-jt- if at("'", tvDataIn)>0 *-jt- lcRetVal='"'+tvDataIn+'"' *-jt- else *-jt- lcRetVal="'"+tvDataIn+"'" *-jt- endif *-jt- endif lcRetVal=C_SQUOTE+strtran(tvDataIn, C_SQUOTE, C_SQUOTE+C_SQUOTE)+C_SQUOTE case vartype(tvDataIn)='L' &&logical lcRetVal=iif(tvDataIn=.t., '1', '0') case vartype(tvDataIn)='X' &&null value lcRetVal='NULL' case vartype(tvDataIn)='N' &&int, float, double, numeric (not currency) &&transform will not work on a B(8) field created by XMLToCursor() lcRetVal=alltrim(str(tvDataIn,16,4)) do while at('.', lcRetVal)>0 and inlist(substr(lcRetVal, len(lcRetVal)), '0', '.') lcRetVal=substr(lcRetVal, 1, len(lcRetVal)-1) enddo case vartype(tvDataIn)='Y' &¤cy lcRetVal=transform(tvDataIn,'999999999999.9999') otherwise &&other lcRetVal=transform(tvDataIn) endcase return lcRetVal