2014-04-16 2 views
0

내가 SQL에서 데이터를 가져옵니다 엑셀 VBA 기능이이 코드는 다음과 같습니다 :엑셀, VBA : 매개 변수화 쿼리

Function GetDCF(vari As String) 

Dim rs As ADODB.Recordset 
Set rs = New ADODB.Recordset 

    Dim cn As ADODB.Connection 
    Set cn = New ADODB.Connection 

     Dim strConn As String 
      Dim sql As String 


    strConn = "PROVIDER=SQLOLEDB;DATA SOURCE=xxxxx;INITIAL CATALOG=xxxxx;INTEGRATED SECURITY=sspi;" 

    cn.Open strConn 


     sql = "select * from table1 where COMPANY = '" & Range("A2").Value & "' " 

     rs.Open sql, cn, adOpenDynamic, adLockOptimistic 

GetDCF = rs.Fields(vari)/100 

cn.Close 

Set rs = Nothing 
Set cn = Nothing 

End Function 

이제 모든 I는 마이크의 개 같은 기업이있는 경우를 제외하고 잘 작동의 아포스트로피는 SQL 쿼리가 제대로 작동하지 못하게합니다. 나는 매개 변수화 된 쿼리로 전환 할 것입니다. 하지만이 경우 어떻게해야할지 모르겠습니다.

어떤 조언을 주셔서 감사합니다! 내가 코멘트에서 언급 한 바와 같이

+1

당신은'작은 따옴표를 탈출해야한다 ''. 'Range ("A2"). Value를'Replace (Range ("A2") .Value, " '", "' '")'로 변경하십시오. –

+0

감사합니다. 그건 잘된거야! – user3344443

답변

2

, 당신은 Replace를 사용하여 SQL 쿼리에서 작은 따옴표를 이스케이프 수 :

sql = "select * from table1 where COMPANY = '" & Replace(Range("A2").Value, "'", "''") & "' "