![]() |
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.
|
Hola.
Por favor, cuando incluyas código en tus mensajes usa las etiquetas adecuadas: ![]() Saludos y gracias por tu colaboración :) |
|
Cita:
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 |
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. |
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 |
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. |
La franja horaria es GMT +2. Ahora son las 12:16:42. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi