una runsql run que parametros ejecutar docmd consultas consulta sql ms-access vba parameterized

runsql - run sql access vba



consulta parametrizada en ms access 2003 usando vba (2)

De acuerdo. Quiero utilizar consultas parametrizadas para evitar el uso de comillas dobles o simples ("o") en mis datos.

Como un ejemplo simple, ¿cómo se vería el código de VBA para la versión parametrizada de esto?

Dim qstr as String Dim possiblyDangerousString as String qstr = "SELECT MyTable.LastName from MyTable WHERE MyTable.LastName = ''" & possiblyDangerousString & "'';"

No corté y pegué esto de mi código (en un cuadro diferente en este momento), por lo que podría haber un error tipográfico.

Una vez que descubro este simple ejemplo, necesito pasar a enunciados más complejos (múltiples parámetros y combinaciones). Gracias por cualquier consejo


El único problema con el uso de la función Reemplazar es que en cualquier lugar donde exista "''" se reemplazará por "'' ''" incluso si ya calificó la cita simple con otra cita única después de ella: "'' ''" se convierte en'' '''' '''' " (y así).

Puede crear un procedimiento o función para verificar cadenas " ''[!''] " Y reemplazar aquellas que usan un Me gusta:

Función pública QualifySingleQuote (myStr as string) As String

If myStr Like "*''[!'']*" Then QualifySingleQuote = Replace(myStr, "''", "''''") Else QualifySingleQuote = myStr EndIf

Función final


En VBA, puede usar algo como:

Dim db As DAO.Database Dim qdf As QueryDef Dim strSQL as String Set db = CurrentDb strSQL = "PARAMETERS txtLastName Text(150); " _ & "SELECT LastName FROM MyTable " _ & "WHERE LastName=txtLastName" ''''Create a temporary query Set qdf = db.CreateQueryDef("", strSQL) qdf.Parameters!txtLastName = Trim(possiblyDangerousString)

Este ejemplo no sirve de mucho, porque ¿qué vas a hacer con la consulta ahora? Tenga en cuenta que puede almacenar consultas de parámetros y asignar los parámetros en VBA. Tenga en cuenta también que los campos memo se convierten en un problema porque un parámetro solo puede aceptar 255 caracteres.