[AccessD] FW: CodeL

jeffrey.demulling at usbank.com jeffrey.demulling at usbank.com
Fri Mar 7 16:40:44 CST 2008


Here is code I use to handle this problem when doing SQL updates on MS SQL
Server DBs

'---------------------------------------------------------------------------------------
' Module    : mdlReplace
' DateTime  : 2004-Mar-29 16:14
' Author    : Jeffrey F. Demulling
' Purpose   : Used to clean up sql statements with quotes(apostrophes) and
double quotes and make
'             it so it can be used in on the fly statements
' Modified  : 2004-Mar-29 16:14 - Jeffrey F. Demulling
' Notes     : Parts of the code in this module come from Tom Jordan at
TriniDat Software Entwicklung GmbH of Duesseldorf BMGH
'---------------------------------------------------------------------------------------
Option Compare Database
Public Function AddQuote(vData As Variant) As String
'---------------------------------------------------------------------------------------
' Procedure : AddQuote
' DateTime  : 2004-Mar-29 16:15
' Author    : Jeffrey F. Demulling
' Purpose   : Adds double quotes to the string passed, and also cleans up
any double
'             and or single quotes within the string passed
' Modified  : 2004-Mar-29 16:15 - Jeffrey F. Demulling
'---------------------------------------------------------------------------------------
'
    'Const QUOTE = """"    '4 quotation marks in a row
    Const QUOTE = "'"

    On Error GoTo AddQuote_Error

    If IsNull(vData) Then
        AddQuote = "NULL"
    Else
        AddQuote = QUOTE & ReplaceQuotes(vData, QUOTE, QUOTE & QUOTE) &
QUOTE
    End If

    On Error GoTo 0
    Exit Function

AddQuote_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure
AddQuote of Module mdlReplace"

End Function

Public Function ReplaceQuotes(ByVal varValue As Variant, ByVal strFind As
String, ByVal strReplace As String) As Variant
'---------------------------------------------------------------------------------------
' Procedure : ReplaceQuotes
' DateTime  : 2004-Mar-29 16:15
' Author    : Jeffrey F. Demulling
' Purpose   : Searches the passed string for quotes (double and single) and
cleans them up.
' Modified  : 2004-Mar-29 16:15 - Jeffrey F. Demulling
'---------------------------------------------------------------------------------------
'
    Dim intLenFind As Integer
    Dim intLenReplace As Integer
    Dim intPos As Integer

    On Error GoTo ReplaceQuotes_Error

    If IsNull(varValue) Then
        ReplaceQuotes = Null
    Else
        intLenFind = Len(strFind)
        intLenReplace = Len(strReplace)

        intPos = 1
        Do
            intPos = InStr(intPos, varValue, strFind, 0)
            If intPos > 0 Then
                varValue = Left(varValue, intPos - 1) & strReplace & _
                           Mid(varValue, intPos + intLenFind)
                intPos = intPos + intLenReplace
            End If
        Loop Until intPos = 0
    End If
    ReplaceQuotes = varValue

    On Error GoTo 0
    Exit Function

ReplaceQuotes_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure
ReplaceQuotes of Module mdlReplace"

End Function

Jeffrey F. Demulling
Project Manager
U.S. Bank Corporate Trust Services
60 Livingston Avenue
EP-MN-WS3C
St. Paul, MN  55107-2292
Ph: 651-495-3925
Fax: 651-495-8103
email: jeffrey.demulling at usbank.com


                                                                           
             "Arthur Fuller"                                               
             <fuller.artful at gm                                             
             ail.com>                                                   To 
             Sent by:                  "Access Developers discussion and   
             accessd-bounces at d         problem solving"                    
             atabaseadvisors.c         <accessd at databaseadvisors.com>      
             om                                                         cc 
                                                                           
                                                                   Subject 
             03/07/2008 04:28          Re: [AccessD] FW: CodeL             
             PM                                                            
                                                                           
                                                                           
             Please respond to                                             
             Access Developers                                             
              discussion and                                               
              problem solving                                              
             <accessd at database                                             
               advisors.com>                                               
                                                                           
                                                                           




If you do both Replace() calls, yes, and the count of occurrences is
irrelevant since it replaces them all.

Arthur

On 3/7/08, Eric Starkenburg <eric.starkenburg at home.nl> wrote:
>
> Arthur,
>
> Does this work when both characters exist in one sentence?
> Maybe the single quote once and two double quotes.
>
>
>
> Regards,
> Eric
>
>
> -----Original Message-----
> From: accessd-bounces at databaseadvisors.com
>
> [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Arthur Fuller
> Sent: Friday, March 07, 2008 11:07 PM
> To: Access Developers discussion and problem solving
> Subject: Re: [AccessD] FW: CodeL
>
> This is overkill, I think, Eric. You just have to know how to handle SQL
> containing either single or double quotes or neither. It's quite
> straightforward, really. You can eliminate all the hassle for any column
> that might contain these values by doubling up on the single and double
> quotes, which you can do in exactly one statement each:
>
> Replace( [columnName], Chr(39), (Chr(39) & Chr(39) )
> and similarly
> Replace( [columnName], Chr(34), (Chr(34) & Chr(34) )
>
> You can wrap both calls into a function if you wish. The code does
nothing
> on values that don't contain the offending characters.
>
> Having been bitten by surnames like O'Hara and embedded quotations, if I
> suspect that this might ever occur, I just pre-empt it right from the
> beginning.
>
> hth,
> Arthur
>
--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com



U.S. BANCORP made the following annotations
---------------------------------------------------------------------
Electronic Privacy Notice. This e-mail, and any attachments, contains information that is, or may be, covered by electronic communications privacy laws, and is also confidential and proprietary in nature. If you are not the intended recipient, please be advised that you are legally prohibited from retaining, using, copying, distributing, or otherwise disclosing this information in any manner. Instead, please reply to the sender that you have received this communication in error, and then immediately delete it. Thank you in advance for your cooperation.



---------------------------------------------------------------------




More information about the AccessD mailing list