|
Página 1 de 1
|
Comilla Simple Y Las Consultas SQL
Autor |
Mensaje |
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Comilla Simple Y Las Consultas SQL
Hola, estoy seguro que se toparon con el problema del uso de comilla simple como carácter en los textos que quieren recuperar o introducir en las base de datos, el chr(39).
Yo de momento venia reemplazándolo antes de usarlo en las consultas SQL, incluso hice una función de adecuación de textos para trabajarlos con SQL.
¿Se puede hacer alguna otra cosa?
Es que ahora estoy con el tema de las canciones, los artistas etc, y muchos de estos nombres tienen comilla simple en el nombre y ademas en ingles usan todo el tiempo este caracter.
Saludos.
|
#1 Domingo, 06 Noviembre 2016, 01:56 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Comilla Simple Y Las Consultas SQL
Hola Tincho:
Muestra un ejemplo con comilla simple que te de problema.
¿ No puedes concatenarlo ?.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#2 Domingo, 06 Noviembre 2016, 08:51 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Comilla Simple Y Las Consultas SQL
Citar: Yo de momento venia reemplazándolo antes de usarlo en las consultas SQL, incluso hice una función de adecuación de textos para trabajarlos con SQL.
¿Se puede hacer alguna otra cosa?
Sí. Usa los objetos de gambas para bases de datos. No tendrás ningún problema.
dim rs as result
rs=laConexion.edit("mitabla", "campoClave = &1", clave)
rs!micampo1=mivalor1_que_contiene_comilla_simple
rs!micampo2=mivalor2
etc.
rs.update()
Más o menos...
Más aún, un pequeño truco que yo uso en todos mis programas: Llama a tus controles que contengan datos de la BD igual que los campos de la BD, es decir si tienes un campo "autor" llama al textbox que lo muestra "autor". Luego haces ésto.
dim rs as result
dim ctrl as control
dim fld as resultfield
rs=laConexion.edit("mitabla", "campoClave = &1", clave)
for each fld in rs.fields 'por cada campo del result
for each control in me.controls 'comprobamos si existe un control
if fld.name=ctrl.name then 'que se llame igual . Entonces
try rs[fld.name]=ctrl.Value 'buscamos el Value por si es un número, fecha, etc.
if error then 'si hay error no tiene propiedad Value, entonces
rs[fld.name]=ctrl.Text 'grabamos el Text en su lugar
endif
endif
next
next
rs.update
Si lo conviertes en función y lo pones en un módulo, ya nunca más tienes que preocuparte por la grabación de datos de ninguna tabla. Con pasarle a la función como parámetro el form, la tabla y la clave, te vale para grabar cualquier registro de cualquier tabla en cualquier base de datos.
Saludos
Saludos
=================== No podemos regresar
última edición por shordi el Domingo, 06 Noviembre 2016, 11:09; editado 2 veces
|
#3 Domingo, 06 Noviembre 2016, 10:44 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Comilla Simple Y Las Consultas SQL
Con la misma idea puedes rellenar los datos de cualquier formulario también, claro, símplemente llamas a los controles igual que a los campos y llamas a la función de rellenar el form. Te vale para cualquier tabla, campo, database y proyecto.
Si te interesa, te puedo pasar el módulo que uso para todo esto (añadir registro, editar, eliminar, etc. etc.)
Saludos.
=================== No podemos regresar
|
#4 Domingo, 06 Noviembre 2016, 11:11 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Comilla Simple Y Las Consultas SQL
Sí. Usa los objetos de gambas para bases de datos. No tendrás ningún problema.
dim rs as result
rs=laConexion.edit("mitabla", "campoClave = &1", clave)
rs!micampo1=mivalor1_que_contiene_comilla_simple
rs!micampo2=mivalor2
etc.
rs.update()
Si esta bien esto, yo estaba usando sentencias sql directamente, por la velocidad que presta pero, esto es practico la verdad, porque ademas el código sirve para todas los tipos de bases de datos.
Citar:
Más aún, un pequeño truco que yo uso en todos mis programas: Llama a tus controles que contengan datos de la BD igual que los campos de la BD, es decir si tienes un campo "autor" llama al textbox que lo muestra "autor". Luego haces ésto.
dim rs as result
dim ctrl as control
dim fld as resultfield
rs=laConexion.edit("mitabla", "campoClave = &1", clave)
for each fld in rs.fields 'por cada campo del result
for each control in me.controls 'comprobamos si existe un control
if fld.name=ctrl.name then 'que se llame igual . Entonces
try rs[fld.name]=ctrl.Value 'buscamos el Value por si es un número, fecha, etc.
if error then 'si hay error no tiene propiedad Value, entonces
rs[fld.name]=ctrl.Text 'grabamos el Text en su lugar
endif
endif
next
next
rs.update
Esto esta también interesante, la limitación que le veo al método es cuando se usan claves foráneas, y el campo garda un entero en ves del texto.
Pero se puede adaptar por supuesto para usar el .tag de un combobox valor del campo de la base de datos y cargar en su lista todos los textos del campo de la tabla foránea, por ejemplo.
Habria que trabajarlo un poco pero es un método limpio y practico. Lo analizare.
Saludos.
|
#5 Domingo, 06 Noviembre 2016, 13:47 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Comilla Simple Y Las Consultas SQL
Con la misma idea puedes rellenar los datos de cualquier formulario también, claro, símplemente llamas a los controles igual que a los campos y llamas a la función de rellenar el form. Te vale para cualquier tabla, campo, database y proyecto.
Si te interesa, te puedo pasar el módulo que uso para todo esto (añadir registro, editar, eliminar, etc. etc.)
Saludos.
Si, por supuesto que me interesa. porque la tabla, la clave y los nombres de los campos son parámetros que se conocen de antemano, así que se podría implantar, me atrevo a decir, sin tocar el resto del código.
¿Tu módulo contempla las claves foráneas?
Saludos.
|
#6 Domingo, 06 Noviembre 2016, 13:51 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Comilla Simple Y Las Consultas SQL
Acabo de subir un hilo con un ejemplo del módulo y algunos de los controles que lo complementan. Es una versión reducida del que utilizamos en el curro, que el original se encarga de más cosas (grabar los logs y cosas así). Espero que en la labor de poda y simplificación no se me haya colado ningún error.
Lo tienes aquí:
https://foro.gambas-es.org/viewtopic.php?f=5&t=5926
=================== No podemos regresar
última edición por shordi el Domingo, 06 Noviembre 2016, 23:28; editado 1 vez
|
#7 Domingo, 06 Noviembre 2016, 23:27 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|