Visual Basic - Problema al introducir datos en la BD

Life is soft - evento anual de software empresarial
 
Vista:

Problema al introducir datos en la BD

Publicado por Manelnight (69 intervenciones) el 10/11/2002 01:49:59
Mi problema es que tengo un formulario con varios textbox donde el usuario pone los datos, unos númericos,fechas y texto. El problema viene en los de texto, si el usuario en el txtNombre pone un nombre con un' por ejemplo ( L'andreu) el programa me peta pq al hacer la consulta SQL , me coje el caracter " ' " y se piensa que ahí se acaba la comparación. No se si me he explicado bien. Os pongo la sentencia sql:

Set RsPersonal = Bd.OpenRecordset("SELECT PERSONAL.* FROM PERSONAL WHERE PERSONAL.Nombre='" & TxtNombre.Text & "'")

Si en TxtNombre.text pone un apostrofe ( L'Andreu) por ejemplo quedaría esto y peta:

Set RsPersonal = Bd.OpenRecordset("SELECT PERSONAL.* FROM PERSONAL WHERE PERSONAL.Nombre=' L ' Andreu ' '")
Aqui ---^ petara pq la sentencia estaría mal construida.
Como lo puedo hacer para que si me introducen el caracter ' funcione.

en el error pone lo siguiente:
Error '3075' en tiempo de ejecución:
Error de sintaxis (falta operador) en la expresión de consulta ' PERSONAL.Nombre='L'Andreu".

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema al introducir datos en la BD

Publicado por javi (5 intervenciones) el 10/11/2002 12:51:18
Tienes q construirte un procedimiento q quite el apostrofe de una cadena y luego recorrer la tabla buscandole
ejm:
while rs.eof = false
nombre_tabla= quitar_apostro(rs.fields(\"nombre\").value)
if nombre_sinapos = nombre_tabla then
\'te quedas con el campo clave
numid = rs.fields(\"id\").value
end if
rs.movenext
wend
\' y ahora buscas en la consulta por el camplo clave
Set Rs = Bd.OpenRecordset(\"SELECT PERSONAL.* FROM PERSONAL WHERE personal.id = & numid)

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema al introducir datos en la BD

Publicado por Manelnight (69 intervenciones) el 11/11/2002 00:09:47
Pero lo que yo quiero es que se puedan guardar datos con el apostrofe, porque si lo quito ya no es lo mismo que ha escrito el usuario.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema al introducir datos en la BD

Publicado por Manelnight (69 intervenciones) el 11/11/2002 00:13:53
Pero lo que yo quiero es que se puedan guardar datos con el apostrofe, porque si lo quito ya no es lo mismo que ha escrito el usuario.
En ACCESS tu puedes guardar cualquier palabra con apostrofe y no pasa nada
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema al introducir datos en la BD

Publicado por J2ML (464 intervenciones) el 11/11/2002 19:24:16
1.- En realidad con SQL se pueden guardar datos con apostrofe tranquilamente para ello utilizas el EXECUTE del objeto connection y un INSERT INTO y para evantar los datos con la propiedad Filter del recordset podrás hacer loque quieres..!
2.- En cuanto al o que te dijo Javi, estoy deacuerdo con él porque creo que lo que te quizo decir fue:

Public Function QuitarApos(texto as String) as string
QuitarApos=""
For jon=1 to len(texto)
if mid(texto,jon,1)="'" then
QuitarApos=QuitarApos+"$" 'PUEDES EMPLEAR OTRO SIMBOLO ES TU ELECCION
else
QuitarApos=QuitarApos+mid(texto,jon,1)
end if
return QuitarApos
end function

Public Function PonerApos(texto as String) as string
PonerApos=""
For jon=1 to len(texto)
if mid(texto,jon,1)="$" then
PonerApos=PonerApos+"'" 'PUEDES EMPLEAR OTRO SIMBOLO ES TU ELECCION
else
PonerApos=PonerApos+mid(texto,jon,1)
end if
return PonerApos
end function

Luego al guardar en la base de datos:
rst.fields("apellidos")=QuitarApos(text1.text)

en el Select:
"Select * from Datos Where Apellidos ='"+QuitarApos(Text1.text)+"'"

Al visualizar:
text1.text=PonerApos(rst.fields("apellido")

Entonces si es relativamente sencillo ¿ Porque no hacerlo ?.. J2ML
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema al introducir datos en la BD

Publicado por Manelnight (69 intervenciones) el 11/11/2002 23:33:19
Gracias por vuestra respuesta pero si lo que hago es sustituir el apostrofe por otro signo ($), si el usuario me pone unos datos con ese signo, luego cuando lo consulten, en vez de mostrarle ese signo le mostrará un apostrofe.
No hay una forma de que guarde el apostrofe???

saludos

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar