una consulta sobre los apostrofes, toda la tarde probe la forma enviar en un String un apostrofe
especificamente para un script SQL de consulta a una Base de Datos, y no me permite obtener una cadena correcta:
function Lista_Empresas_Autorizadas(strLogin: String): TClientDataSet; var strSQL: String; fecha: TDate; begin fecha:= date(); strSQL:='SELECT '; strSQL:=strSQL+' mad_empleado.codigo_empresa as codigo,'; strSQL:=strSQL+' mad_empresa.razon_social as descripcion'; strSQL:=strSQL+' FROM mad_empresa INNER JOIN mad_empleado'; strSQL:=strSQL+' ON (mad_empleado.codigo_empresa = mad_empresa.codigo_empresa)'; strSQL:=concat(strSQL,' WHERE mad_empleado.login = ', #39, strLogin,#39); // strSQL:=concat(strSQL,' WHERE mad_empleado.login = ', QuotedStr(strLogin)); strSQL:=strSQL+' ORDER BY mad_empresa.razon_social'; result:=Consulta(strSQL); end;
Despues de probar 'n' sintaxis de concatenacion y ejecutar esta funcion la cadenita strSQL queda asi, Fíjense en la línea con comentario:
SELECT mad_empleado.codigo_empresa as codigo, mad_empresa.razon_social as descripcion
FROM mad_empresa INNER JOIN mad_empleado
ON (mad_empleado.codigo_empresa = mad_empresa.codigo_empresa)
WHERE mad_empleado.login = ''Administrador'' //ME MANDA 2 APOSTROFES
ORDER BY mad_empresa.razon_social
Si le quito el #39 ó la funcion QuotedStr La linea en cuestión, me la manda así:
WHERE mad_empleado.login = Administrador
0 apostrofes,
En cualquiera de los dos casos, la base de datos no reconoce una cadena con una cantidad par de apostrofes. Lo correcto es que se reciba así:
WHERE mad_empleado.login = 'Administrador'
1 apostrofe, pero desde Delphi no llega.
Esto debería llegar, pero probando con más apostrofes, siempre Delphi exige una cantidad impar, pero su contenido fuera de Delphi es con una cantidad par,
En varios foros resuelven el problema pero de versiones 2006, ¿alguna solución para esta versión por favor?
Hago una aclaración: estoy utilizando la modalidad de envío de cadenas SQL directamente a la base de datos, pues es más directo, más ligero. Sólo armo la cadena de de inserción o modificación o lo que sea y nada más; siempre trabajé así, soy nuevo en Delphi y me estoy encontrando con algunas cosillas que en teoría funcionan, pero en la práctica no se como hacerlas todavía.
Muchas gracias de antemano por el apoyo.