Domingo 22 de Diciembre de 2024, 18:57
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Visual Basic 6.0 e inferiores
(Moderador:
F_Tanori
) »
Problemon Con Sql
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Problemon Con Sql (Leído 1364 veces)
chryobcn
Miembro activo
Mensajes: 26
Problemon Con Sql
«
en:
Lunes 17 de Mayo de 2004, 18:12 »
0
Saludos
Estoy un poco puteado ya que si en los textbox introducen un nombre con una comilla simple me jode la sintaxis sql causando un error en el programa y no se como remediarlo.
Un ejemplo del tipo de codigo que utilizo es:
Código: Text
strSQL = "INSERT INTO servei (nom,descripcio,estat,codi_carrec) VALUES('" + txtField(1).Text + "','" + txtField(2).Text + "','" + Estat + "'," & codCargo & ")"
las consultas y ejecuciones las ejecuto desde unas funciones que son:
Código: Text
Public Function openRs(ByVal strSQL As String) As Recordset
Dim rsAux As New Recordset
Dim errLoop As Error
On Error GoTo Err_Execute
If GetStateRs(cnConexion.State) = "Closed" Then
If conexionBD = False Then
MsgBox "Ha ocurrido un error en la conexión con la base de datos" + vbCr _
+ "Este error finalizará la ejecución de la aplicación, si el problema persiste avise al Administrador", vbCritical, "Error Grave"
End
End If
End If
With rsAux
.Source = strSQL
.ActiveConnection = cnConexion
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Open strSQL
End With
If GetStateRs(rsAux.State) = "Open" Then
Set openRs = rsAux
End If
On Error GoTo 0
Exit Function
Err_Execute:
' Notifica al usuario cualquier error resultante tras
' ejecutar la consulta.
If cnConexion.Errors.Count > 0 Then
For Each errLoop In cnConexion.Errors
MsgBox "Número de error: " & errLoop.Number & vbCr & _
errLoop.Description, vbCritical
Next errLoop
End If
Set openRs = Nothing
End Function
Public Function execSQL(ByVal strSQL As String) As Integer
Dim cmdRs As New Command
Dim errLoop As Error
If GetStateRs(cnConexion.State) = "Closed" Then
If conexionBD = False Then
MsgBox "Ha ocurrido un error en la conexión con la base de datos" + vbCr _
+ "Este error finalizará la ejecución de la aplicación, si el problema persiste avise al Administrador", vbCritical, "Error Grave"
End
End If
End If
' Borra los errores ajenos de la colección Errors.
cnConexion.Errors.Clear
With cmdRs
.ActiveConnection = cnConexion
.CommandText = strSQL
.CommandType = adCmdText
End With
On Error GoTo Err_Execute
cmdRs.Execute execSQL
On Error GoTo 0
Exit Function
Err_Execute:
' Notifica al usuario cualquier error resultante tras
' ejecutar la consulta.
If cnConexion.Errors.Count > 0 Then
For Each errLoop In cnConexion.Errors
MsgBox "Error número: " & errLoop.Number & vbCr & _
errLoop.Description, vbCritical
Next errLoop
End If
Resume Next
End Function
Aunque las funciones me detecten el error luego al trabajar con los recordsets me falla. Al tenerlo centralizado por estas dos funciones hay alguna forma de solventar este error solo modificando estas dos funciones y sino me conformaria con modificar los sql si me decis como.
Gracias por vuestra ayuda
Tweet
elmango80
Miembro MUY activo
Mensajes: 149
Nacionalidad:
Re: Problemon Con Sql
«
Respuesta #1 en:
Lunes 17 de Mayo de 2004, 23:52 »
0
Ese es un gran problema que tiene las sentencias SQL y hay varias formas simples de solucionar el problema, la mas comun es evitar que el usuario pueda introducir el caracter
'
dentro del texto:
Código: Text
Private Sub txtNombre_KeyPress(KeyAscii As Integer)
If Chr(KeyAscii) = "'" Then
KeyAscii = 0
End If
End Sub
O en lugar de evitar que el usuario pueda introducir el caracter
'
puedes antes de almacenar el valor en una variable o utilizarlo cambiarlo por el caracter que prefieras o eliminarlo:
Código: Text
strNombre = Replace(txtNombre.Text, "'", "")
----- O -----
Citar
No soy bueno, tampoco soy malo sino todo lo contrario...
chryobcn
Miembro activo
Mensajes: 26
Re: Problemon Con Sql
«
Respuesta #2 en:
Martes 18 de Mayo de 2004, 21:32 »
0
Saludos
Me han comentado una forma un poco machaca que es poniendo algo como:
Código: Text
INSERT INTO tabla (campo1,campo2) VALUES("+""""+var+""""+",....)
No es exactamente asi y no lo consigo sacar, si alguien conoce la sintaxis correctamente se lo agradeceria.
Brroz
Miembro de PLATA
Mensajes: 1058
Re: Problemon Con Sql
«
Respuesta #3 en:
Jueves 20 de Mayo de 2004, 15:09 »
0
Código: Text
Dim strSQL as string
strSQL = "INSERT INTO tabla (campo1,campo2) " _
& "VALUES( '" & replace(variableTexto,"'","''") & "' , " & variableNum & ")"
Remplazar cada comilla simple
'
por dos comillas simples
''
.
Abur.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Visual Basic 6.0 e inferiores
(Moderador:
F_Tanori
) »
Problemon Con Sql