FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Preparar cadena para Sql
Hola compañeros,
Llevo unos días dándole vueltas al problema por el cual la siguiente función ha dejado de funcionar al pasar de delphi 3 a delphi XE6. Es una función que prepara las cadenas para poderselas pasar antes a un TwwQuery.sql, ahora a un TFDQuery.sql, antes cualquier cadena que le pasara la devolvía entre comillas simples para que luego el qry la interpretara, pero ahora con XE6, siendo la misma función me la devuelve entre comillas dobles. Me podeis ayudar a ver donde estoy metiendo la pata o que ha cambiado que desconozco. Muchas gracias de antemano y un saludo.
Última edición por roman fecha: 12-05-2017 a las 17:10:04. Razón: Colocar etiquetas [delphi]..[/delphi] |
#2
|
||||
|
||||
Hola.
Por favor, cuando incluyas código en tus mensajes usa las etiquetas adecuadas: Saludos y gracias por tu colaboración
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#3
|
||||
|
||||
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#4
|
||||
|
||||
De entrada, hay que notar que no es lo mismo comillas dobles: " que dos comillas sencillas: ''. Y lo digo porque en tu código no hay de dónde salgan las comillas dobles.
Otra cosa es que no se entiende lo que quieres hacer pero casi estoy seguro que no lo estás haciendo de la forma correcta. Si lo que quieres es lidiar con valores en tu cadena SQL que contengan comillas (simples o dobles) para que el parser de SQL no se confunda, los motores y/o componentes de bases de datos suelen tener mejores maneras de tratar esto, como lo son el paso de parámetros o funciones que "escapan" caracteres especiales para SQL. Yo te recomendaría revisar eso. LineComment Saludos |
#5
|
|||
|
|||
Cita:
También he probado con la función QuotedStr como dice ecfisa y pasa exáctamente lo mismo, me dobla la comilla. Bueno, muchas gracias por vuestro tiempo. |
#6
|
||||
|
||||
Cita:
Si Cad[i] es una comilla, la línea
la pone en Aux, PERO, la siguiente línea:
la vuelve a poner. La verdad es que no tienes porqué agregar nada. En Delphi pones doble comilla simple para que el compilador entienda que es una comilla, ya que en pascal las cadenas van entre comillas simples. Pero esto sólo es necesario cuando escribes la cadena directamente en el código Delphi. En tu función CadenaSQL, ya recibes una cadena y lo que deberías hacer con esas comillas sería, en todo caso, "escaparlas" con una diagonal \ o con el caracter de escape de tu manejador de bases de datos, pero no colocando una comilla extra porque éso sólo Delphi lo entiende, no el gestor de bases de datos. Por otro lado, "escapar" tú mismo ese tipo de caracteres no es para nada recomendable. Por ello es que debes usar parámetros. Y cuando digo parámetros no mer refiero a valores que se pasen en tiempo de ejecución, sino a valores que se pasan a la sentencia SQL. Algo así (aunque depende un poco de los componentes que uses para acceder a BD):
LineComment Saludos |
#7
|
|||
|
|||
Cita:
Voy a probar todo el tema con los parámetros y ya os contaré, si se os ocurre algo diferente comentarlo. De nuevo, gracias por tu tiempo. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Funciones para limpiar y buscar una cadena en otra cadena o en un fichero | xaguilars | Trucos | 1 | 29-07-2007 22:20:14 |
Funcion para borrar la cadena que aparesca repetida dentro de otra cadena | flystar | Varios | 1 | 02-07-2007 23:51:10 |
Funcion para buscar cadena dentro de otra cadena y el numero de veces | flystar | Varios | 3 | 02-07-2007 22:48:08 |
Preparar BD sin dependencias | Deiv | Varios | 10 | 24-01-2007 02:17:17 |
Preparar pagina en PReport | ElCherchu | Impresión | 5 | 23-06-2003 16:15:52 |
|