Autor: csbq
Al consultar la base de datos, a menudo encontrará la siguiente situación:
Por ejemplo, desea consultar su nombre de usuario y su contraseña en una base de datos de usuarios, pero el nombre y la contraseña utilizados por el usuario tienen caracteres especiales, como comillas simples, signos "|", comillas dobles o guiones "&". .
Por ejemplo, su nombre es 1'test y su contraseña es A|&900. Cuando ejecute la siguiente declaración de consulta, definitivamente se informará un error:
SQL = "SELECCIONAR * DESDE Nivel de seguridad DONDE UID='" & ID de usuario & "'"
SQL = SQL & " AND PWD='" & Contraseña & "'"
porque su SQL será así:
SELECT * FROM SecurityLevel WHERE UID='1'test' AND PWD='A|&900'
En SQL, "|" se usa para separar campos, por lo que obviamente algo saldrá mal. Ahora se proporcionan las siguientes funciones para solucionar estos dolores de cabeza:
Función ReemplazarStr (TextIn, ByVal SearchStr como cadena, _
ByVal Reemplazo como cadena, _
ByVal CompMode como entero)
Atenuar WorkText como cadena, puntero como entero
Si IsNull(TextIn) Entonces
ReemplazarStr = Null
De lo contrario
WorkText = TextIn
Puntero = InStr(1, WorkText , SearchStr, CompMode)
Hacer mientras Puntero > 0
WorkText = Left(WorkText, Pointer - 1) & Reemplazo & _
Mid(WorkText, Pointer + Len(SearchStr))
Puntero = InStr(Pointer + Len(Replacement), WorkText, _
SearchStr , CompMode)
Bucle
ReemplazoStr = WorkText
Fin si
finaliza la función
Función SQLFixup(TextIn)
SQLFixup = ReemplazarStr(TextIn, "'", "''", 0)
Finalizar función
Función JetSQLFixup(TextIn)
Dim Temp
Temp = ReemplazarStr(TextIn, "'", "''", 0)
JetSQLFixup = ReemplazarStr(Temp, "|", "' & chr(124) & '", 0)
Función final
Función FindFirstFixup(TextIn)
Dim Temp
Temp = ReemplazarStr(TextIn, "'", "' & chr(39) & '", 0)
FindFirstFixup = ReemplazarStr(Temp, "|", "' & chr(124) & '" , 0)
Función final
Después de tener las funciones anteriores, antes de ejecutar un SQL, utilice:
SQL = "SELECCIONAR * DESDE Nivel de seguridad DONDE UID='" & SQLFixup(ID de usuario) & "'"
SQL = SQL & " AND PWD='" & SQLFixup(Contraseña) & "'"