2010-10-20 35 views
6

Obtengo un nombre de cliente del menú desplegable y uso ese valor para consultar una hoja de cálculo de Excel; sin embargo, el nombre puede contener una sola comilla (por ejemplo, Adam's Meat). Esto rompe mi aplicación y ¿cómo hago una consulta con una variable que contiene una sola cita?¿Cómo lidiar con comillas simples en la consulta de Word VBA SQL?

Private Sub cboCompany_Change() 
      Dim customerName As String 
      customerName = cboCompany.Value 

rsT.Open "SELECT Customer, Postcode, Address1, Address2, State, Country FROM Customers WHERE Customer = '" & customerName & "'", cn, adOpenStatic 

Respuesta

7

donde se especifica dos comillas simples '', uno va a escapar de la otra y se traducirá en una sola, de tratar de reemplazar así:

customerName = Replace(customerName, "'", "''") 
+0

¿Pero entonces no coincidirá con el nombre del cliente en la hoja de cálculo? – Morgan

+0

Las dos comillas simples se considerarán como una sola comilla cuando coincida con el valor real. –

+0

Ok, tuve que cambiarlo a customerName = Replace (customerName, "'", "' '") embargo. Gracias Sarfraz – Morgan

7

Esto le deja totalmente abierta a un ataque de inyección SQL . Yo recomendaría cambiar esto a una consulta parametrizada como esta

Dim cmd as NEW ADODB.Command 

With cmd 
.CommandText=”SELECT foo from tblBar where foo=?” 
.Parameters.Append .CreateParameter("@foo", adVarChar, adParamInput, 50, “What ever you want”) 
.ActiveConnection=dbCon 
.CommandType=adCmdText 
End With 

Set rst=cmd.execute 
Cuestiones relacionadas