Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Using bracket in SQL Select from VFP
Message
 
General information
Forum:
Microsoft SQL Server
Category:
Other
Environment versions
SQL Server:
SQL Server 2005
Miscellaneous
Thread ID:
01513057
Message ID:
01513102
Views:
43
>>>>>You need to double the apostrophe or use parameter (preferred method).
>>>>
>>>>Say the parameter is not applicable and you only have an option of what you call "double the apostrophe." Then user enters "O'Connell", do you mean to search within the entry (before adding it to the SQL Select) and add another single apostrophe as "O''Connell"?
>>>
>>>We have a special function called VFP2SQL that doubles the single quote and does other related changes if needed. Let me know if you want this code published or alternatively search the net as I remember I read long time ago the similar function at some Russian guy working a lot with SQL Server (forgot his last name, right now).
>>
>>Do you mind emailing me this function? But if for whatever reason (you don't have to explain) you can't, don't worry. I will still love you :).
>>Thank you.
>
>I didn't write it, but I don't think it's too complex to not be able to share:
>
>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
Thank you very much. Very useful function to have.
"The creative process is nothing but a series of crises." Isaac Bashevis Singer
"My experience is that as soon as people are old enough to know better, they don't know anything at all." Oscar Wilde
"If a nation values anything more than freedom, it will lose its freedom; and the irony of it is that if it is comfort or money that it values more, it will lose that too." W.Somerset Maugham
Previous
Reply
Map
View

Click here to load this message in the networking platform