Grupo esta es una de las tantas sentencias Sql que tiene mi sistema... Aclaro que trabajo con Lazarus y no con Delphi....
lcSql:='SELECT RF.RDB$FIELD_NAME AS FIELD_NAME,CASE FL.RDB$FIELD_TYPE ';
lcSql:=lcSql+' WHEN 7 THEN ''SMALLINT''';
lcSql:=lcSql+' WHEN 8 THEN ''INTEGER''';
lcSql:=lcSql+' WHEN 9 THEN ''QUAD''';
lcSql:=lcSql+' WHEN 10 THEN ''FLOAT''';
lcSql:=lcSql+' WHEN 11 THEN ''D_FLOAT''';
lcSql:=lcSql+' WHEN 12 THEN ''DATE''';
lcSql:=lcSql+' WHEN 13 THEN ''TIME''';
lcSql:=lcSql+' WHEN 14 THEN ''CHAR''';
lcSql:=lcSql+' WHEN 16 THEN ''INT64''';
lcSql:=lcSql+' WHEN 27 THEN ''DOUBLE''';
lcSql:=lcSql+' WHEN 35 THEN ''TIMESTAMP''';
lcSql:=lcSql+' WHEN 37 THEN ''VARCHAR''';
lcSql:=lcSql+' WHEN 40 THEN ''CSTRING''';
lcSql:=lcSql+' WHEN 261 THEN ''BLOB''';
lcSql:=lcSql+' ELSE ''DESCONOCIDO''';
lcSql:=lcSql+' END AS FIELD_TYPE,';
lcSql:=lcSql+' FL.RDB$FIELD_LENGTH AS FIELD_LENGTH,';
lcSql:=lcSql+' COALESCE(CS.RDB$CHARACTER_SET_NAME,'''') AS FIELD_CHARSET';
lcSql:=lcSql+' FROM RDB$RELATION_FIELDS RF ';
lcSql:=lcSql+' LEFT JOIN RDB$FIELDS FL ON RF.RDB$FIELD_SOURCE =
FL.RDB$FIELD_NAME';
lcSql:=lcSql+' LEFT JOIN RDB$CHARACTER_SETS CS ON FL.RDB$CHARACTER_SET_ID
= CS.RDB$CHARACTER_SET_ID';
lcSql:=lcSql+' WHERE RF.RDB$RELATION_NAME=:nomTabla AND
RF.RDB$FIELD_NAME=:nomCampo';
lcSql:=lcSql+' ORDER BY RF.RDB$FIELD_POSITION';La cargue asi y tambien la cargue directamente en un variable.
Pero en tiempo de ejecucion solo se cargan las primeras 255 posiciones, es decir...
'SELECT RF.RDB$FIELD_NAME AS FIELD_NAME,CASE FL.RDB$FIELD_TYPE WHEN 7 THEN ''SMALLINT'' WHEN 8 THEN ''INTEGER'' WHEN 9 THEN ''QUAD'' WHEN 10 THEN ''FLOAT'' WHEN 11 THEN ''D_FLOAT'' WHEN 12 THEN ''DATE'' WHEN 13 THEN ''TIME'' WHEN 14 THEN ''...
Y obviamente no funciona.
La variable lcSql la defini tanto como String como AnsiString, que seg�n dice en este link es ilimitado...
http://www.freepascal.org/docs-html/ref/refsu12.html
Pero de todos modos solo toma los primeros 255 caracteres.
Estoy trabajando con el objeto TSQLQuery
Si pruebo mi sentencia directamente en FlameRobin funciona con lo cual debo pensar que todo el problema recae en TSqlQuery.
En este caso todos los when los puedo hacer del lado de Lazarus para acortar la sentencia, pero en muchos caso no voy a poder hacer eso, con lo cual esta es una soluci�n para salir del paso pero no una soluci�n real.
Se les ocurre alguna otra soluci�n?
Saludos,
Pancho
C�rdoba
Argentina
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20150813/6f739775/attachment.html>
