Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2015-08

Sentencia larga Sql

9 messages · 3 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

francisco prieto

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>

Reply by email

francisco prieto
to francisco prieto

Me contesto solito...

Se corrige asi...

ModuloDatos.qAccionSql.SQL.Add('SELECT RF.RDB$FIELD_NAME AS FIELD_NAME,CASE
FL.RDB$FIELD_TYPE ');
 ModuloDatos.qAccionSql.SQL.Add(' WHEN   7 THEN ''SMALLINT''');
 ModuloDatos.qAccionSql.SQL.Add(' WHEN   8 THEN ''INTEGER''');
 ModuloDatos.qAccionSql.SQL.Add(' WHEN   9 THEN ''QUAD''');
 ModuloDatos.qAccionSql.SQL.Add(' WHEN  10 THEN ''FLOAT''');
 ModuloDatos.qAccionSql.SQL.Add(' WHEN  11 THEN ''D_FLOAT''');
 ModuloDatos.qAccionSql.SQL.Add(' WHEN  12 THEN ''DATE''');
 ModuloDatos.qAccionSql.SQL.Add(' WHEN  13 THEN ''TIME''');
 ModuloDatos.qAccionSql.SQL.Add(' WHEN  14 THEN ''CHAR''');
 ModuloDatos.qAccionSql.SQL.Add(' WHEN  16 THEN ''INT64''');
 ModuloDatos.qAccionSql.SQL.Add(' WHEN  27 THEN ''DOUBLE''');
 ModuloDatos.qAccionSql.SQL.Add(' WHEN  35 THEN ''TIMESTAMP''');
 ModuloDatos.qAccionSql.SQL.Add(' WHEN  37 THEN ''VARCHAR''');
 ModuloDatos.qAccionSql.SQL.Add(' WHEN  40 THEN ''CSTRING''');
 ModuloDatos.qAccionSql.SQL.Add(' WHEN 261 THEN ''BLOB''');
 ModuloDatos.qAccionSql.SQL.Add(' ELSE ''DESCONOCIDO''');
 ModuloDatos.qAccionSql.SQL.Add(' END AS FIELD_TYPE,');
 ModuloDatos.qAccionSql.SQL.Add(' FL.RDB$FIELD_LENGTH AS FIELD_LENGTH,');
 ModuloDatos.qAccionSql.SQL.Add(' COALESCE(CS.RDB$CHARACTER_SET_NAME,'''')
AS FIELD_CHARSET');
 ModuloDatos.qAccionSql.SQL.Add(' FROM RDB$RELATION_FIELDS RF ');
 ModuloDatos.qAccionSql.SQL.Add(' LEFT JOIN RDB$FIELDS FL ON
RF.RDB$FIELD_SOURCE = FL.RDB$FIELD_NAME');
 ModuloDatos.qAccionSql.SQL.Add(' LEFT JOIN RDB$CHARACTER_SETS CS ON
FL.RDB$CHARACTER_SET_ID = CS.RDB$CHARACTER_SET_ID');
 ModuloDatos.qAccionSql.SQL.Add(' WHERE RF.RDB$RELATION_NAME=:nomTabla AND
RF.RDB$FIELD_NAME=:nomCampo');
 ModuloDatos.qAccionSql.SQL.Add(' ORDER BY RF.RDB$FIELD_POSITION');

Saludos y gracias,

Pancho
C�rdoba
Argentina

El 13 de agosto de 2015, 10:55, francisco prieto <fajprieto en gmail.com> escribi�:

Show quoted text 68 lines
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/ad5c470d/attachment.html>

Reply by email

francisco prieto
to francisco prieto

Falsa alarma...

El select y los parametros los toma, pero cuando lo ejecuta da el siguiente error

El proyecto Bal9900 ha lanzado una excepcion 'EIBDatabaseError' con el mensaje:
:PrepareStatement:
-Dynamic SQL Error
-SQL error code=-104
-Token unknown - line 2, column 1
-Select

Con esto pienso que cada Add que se hace debe ser una sentencia completa...

Los mantengo al tanto.

Saludos,

Pancho
C�rdoba
Argentina

El 13 de agosto de 2015, 11:08, francisco prieto <fajprieto en gmail.com> escribi�:

Show quoted text 114 lines
Me contesto solito... Se corrige asi... ModuloDatos.qAccionSql.SQL.Add('SELECT RF.RDB$FIELD_NAME AS FIELD_NAME,CASE FL.RDB$FIELD_TYPE '); ModuloDatos.qAccionSql.SQL.Add(' WHEN 7 THEN ''SMALLINT'''); ModuloDatos.qAccionSql.SQL.Add(' WHEN 8 THEN ''INTEGER'''); ModuloDatos.qAccionSql.SQL.Add(' WHEN 9 THEN ''QUAD'''); ModuloDatos.qAccionSql.SQL.Add(' WHEN 10 THEN ''FLOAT'''); ModuloDatos.qAccionSql.SQL.Add(' WHEN 11 THEN ''D_FLOAT'''); ModuloDatos.qAccionSql.SQL.Add(' WHEN 12 THEN ''DATE'''); ModuloDatos.qAccionSql.SQL.Add(' WHEN 13 THEN ''TIME'''); ModuloDatos.qAccionSql.SQL.Add(' WHEN 14 THEN ''CHAR'''); ModuloDatos.qAccionSql.SQL.Add(' WHEN 16 THEN ''INT64'''); ModuloDatos.qAccionSql.SQL.Add(' WHEN 27 THEN ''DOUBLE'''); ModuloDatos.qAccionSql.SQL.Add(' WHEN 35 THEN ''TIMESTAMP'''); ModuloDatos.qAccionSql.SQL.Add(' WHEN 37 THEN ''VARCHAR'''); ModuloDatos.qAccionSql.SQL.Add(' WHEN 40 THEN ''CSTRING'''); ModuloDatos.qAccionSql.SQL.Add(' WHEN 261 THEN ''BLOB'''); ModuloDatos.qAccionSql.SQL.Add(' ELSE ''DESCONOCIDO'''); ModuloDatos.qAccionSql.SQL.Add(' END AS FIELD_TYPE,'); ModuloDatos.qAccionSql.SQL.Add(' FL.RDB$FIELD_LENGTH AS FIELD_LENGTH,'); ModuloDatos.qAccionSql.SQL.Add(' COALESCE(CS.RDB$CHARACTER_SET_NAME,'''') AS FIELD_CHARSET'); ModuloDatos.qAccionSql.SQL.Add(' FROM RDB$RELATION_FIELDS RF '); ModuloDatos.qAccionSql.SQL.Add(' LEFT JOIN RDB$FIELDS FL ON RF.RDB$FIELD_SOURCE = FL.RDB$FIELD_NAME'); ModuloDatos.qAccionSql.SQL.Add(' LEFT JOIN RDB$CHARACTER_SETS CS ON FL.RDB$CHARACTER_SET_ID = CS.RDB$CHARACTER_SET_ID'); ModuloDatos.qAccionSql.SQL.Add(' WHERE RF.RDB$RELATION_NAME=:nomTabla AND RF.RDB$FIELD_NAME=:nomCampo'); ModuloDatos.qAccionSql.SQL.Add(' ORDER BY RF.RDB$FIELD_POSITION'); Saludos y gracias, Pancho C�rdoba Argentina El 13 de agosto de 2015, 10:55, francisco prieto <fajprieto en gmail.com> escribi�: > 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/7305cc48/attachment-0001.html>

Reply by email

Maxi
to francisco prieto

Nunca me pas� salvo en delphi como constantes.

Son las comillas. usa comillas simples o quotedString();
Y comenta como fue con el puerto Serial

El d�a 13 de agosto de 2015, 12:14, francisco prieto <fajprieto en gmail.com> escribi�:

Show quoted text 147 lines
Falsa alarma... El select y los parametros los toma, pero cuando lo ejecuta da el siguiente error El proyecto Bal9900 ha lanzado una excepcion 'EIBDatabaseError' con el mensaje: :PrepareStatement: -Dynamic SQL Error -SQL error code=-104 -Token unknown - line 2, column 1 -Select Con esto pienso que cada Add que se hace debe ser una sentencia completa... Los mantengo al tanto. Saludos, Pancho C�rdoba Argentina El 13 de agosto de 2015, 11:08, francisco prieto <fajprieto en gmail.com> escribi�: > > Me contesto solito... > > Se corrige asi... > > ModuloDatos.qAccionSql.SQL.Add('SELECT RF.RDB$FIELD_NAME AS > FIELD_NAME,CASE FL.RDB$FIELD_TYPE '); > ModuloDatos.qAccionSql.SQL.Add(' WHEN 7 THEN ''SMALLINT'''); > ModuloDatos.qAccionSql.SQL.Add(' WHEN 8 THEN ''INTEGER'''); > ModuloDatos.qAccionSql.SQL.Add(' WHEN 9 THEN ''QUAD'''); > ModuloDatos.qAccionSql.SQL.Add(' WHEN 10 THEN ''FLOAT'''); > ModuloDatos.qAccionSql.SQL.Add(' WHEN 11 THEN ''D_FLOAT'''); > ModuloDatos.qAccionSql.SQL.Add(' WHEN 12 THEN ''DATE'''); > ModuloDatos.qAccionSql.SQL.Add(' WHEN 13 THEN ''TIME'''); > ModuloDatos.qAccionSql.SQL.Add(' WHEN 14 THEN ''CHAR'''); > ModuloDatos.qAccionSql.SQL.Add(' WHEN 16 THEN ''INT64'''); > ModuloDatos.qAccionSql.SQL.Add(' WHEN 27 THEN ''DOUBLE'''); > ModuloDatos.qAccionSql.SQL.Add(' WHEN 35 THEN ''TIMESTAMP'''); > ModuloDatos.qAccionSql.SQL.Add(' WHEN 37 THEN ''VARCHAR'''); > ModuloDatos.qAccionSql.SQL.Add(' WHEN 40 THEN ''CSTRING'''); > ModuloDatos.qAccionSql.SQL.Add(' WHEN 261 THEN ''BLOB'''); > ModuloDatos.qAccionSql.SQL.Add(' ELSE ''DESCONOCIDO'''); > ModuloDatos.qAccionSql.SQL.Add(' END AS FIELD_TYPE,'); > ModuloDatos.qAccionSql.SQL.Add(' FL.RDB$FIELD_LENGTH AS FIELD_LENGTH,'); > ModuloDatos.qAccionSql.SQL.Add(' COALESCE(CS.RDB$CHARACTER_SET_NAME,'''') > AS FIELD_CHARSET'); > ModuloDatos.qAccionSql.SQL.Add(' FROM RDB$RELATION_FIELDS RF '); > ModuloDatos.qAccionSql.SQL.Add(' LEFT JOIN RDB$FIELDS FL ON > RF.RDB$FIELD_SOURCE = FL.RDB$FIELD_NAME'); > ModuloDatos.qAccionSql.SQL.Add(' LEFT JOIN RDB$CHARACTER_SETS CS ON > FL.RDB$CHARACTER_SET_ID = CS.RDB$CHARACTER_SET_ID'); > ModuloDatos.qAccionSql.SQL.Add(' WHERE RF.RDB$RELATION_NAME=:nomTabla AND > RF.RDB$FIELD_NAME=:nomCampo'); > ModuloDatos.qAccionSql.SQL.Add(' ORDER BY RF.RDB$FIELD_POSITION'); > > Saludos y gracias, > > Pancho > C�rdoba > Argentina > > El 13 de agosto de 2015, 10:55, francisco prieto <fajprieto en gmail.com> > escribi�: >> >> 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 > > _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml Linux User #495070 http://domonetic.com/blog

Reply by email

francisco prieto
to Maxi

El 13 de agosto de 2015, 13:34, Maxi <maximiliano.duarte en gmail.com> escribi�:

quotedString()

Excelente lo suyo...

Quedo asi,

lcSql:='SELECT RF.RDB$FIELD_NAME AS FIELD_NAME,CASE FL.RDB$FIELD_TYPE '+ ' WHEN 7 THEN '+QuotedStr('SMALLINT')+
' WHEN 8 THEN '+QuotedStr('INTEGER')+
' WHEN 9 THEN '+QuotedStr('QUAD')+
' WHEN 10 THEN '+QuotedStr('FLOAT')+
' WHEN 11 THEN '+QuotedStr('D_FLOAT')+
' WHEN 12 THEN '+QuotedStr('DATE')+
' WHEN 13 THEN '+QuotedStr('TIME')+
' WHEN 14 THEN '+QuotedStr('CHAR')+
' WHEN 16 THEN '+QuotedStr('INT64')+
' WHEN 27 THEN '+QuotedStr('DOUBLE')+
' WHEN 35 THEN '+QuotedStr('TIMESTAMP')+
' WHEN 37 THEN '+QuotedStr('VARCHAR')+
' WHEN 40 THEN '+QuotedStr('CSTRING')+
' WHEN 261 THEN '+QuotedStr('CSTRING')+
' ELSE '+QuotedStr('DESCONOCIDO')+
' END AS FIELD_TYPE,'+
' FL.RDB$FIELD_LENGTH AS FIELD_LENGTH,'+
' COALESCE(CS.RDB$CHARACTER_SET_NAME,'''') AS FIELD_CHARSET'+ ' FROM RDB$RELATION_FIELDS RF '+
' LEFT JOIN RDB$FIELDS FL ON RF.RDB$FIELD_SOURCE = FL.RDB$FIELD_NAME'+ ' LEFT JOIN RDB$CHARACTER_SETS CS ON FL.RDB$CHARACTER_SET_ID = CS.RDB$CHARACTER_SET_ID'+
' WHERE RF.RDB$RELATION_NAME=:nomTabla AND RF.RDB$FIELD_NAME=:nomCampo'+ ' ORDER BY RF.RDB$FIELD_POSITION';
ModuloDatos.qAccionSql.SQL.Text:=lcSql;
ModuloDatos.qAccionSql.Params.ParamByName('nomTabla').AsString:=lcTabla; ModuloDatos.qAccionSql.Params.ParamByName('nomCampo').AsString:=lcCampo;

Saludos y Gracias,

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/ec007061/attachment.html>

Reply by email

Jose antonio Cuello Principal
to francisco prieto

Hola, comentar alguna cosa que he visto.

1) Si usas una variable string para montar la sentencia, �por qu� usar par�metros? directamente suma los valores a la cadena. A menos que vayas a usar el sql en un bucle donde se ejecutar� con distintos valores, pero en el ejemplo no indicabas esa condici�n.

2) Si usas un TString, como la propiedad SQL del dataset, no necesitas insertar los espacios para separar las distintas partes de la sentencia. Ni al final de la linea anterior ni al comienzo de la nueva. ejplo: midataset.SQL.Add('SELECT *')
midataset.SQL.Add('FROM mitabla');

3) Dependiendo del motor de bases de datos, puedes crear una vista o una funci�n que te realice la conversi�n del FIELD_TYPE quedando la sentencia m�s limpia y no teniendo que escribir el case en cada uso.

Espero pueda ser de ayuda. Un saludo

Earlier message 54 lines
----- Mensaje original ----- De: "francisco prieto" <fajprieto en gmail.com> Para: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Enviados: Viernes, 14 de Agosto 2015 3:00:47 Asunto: Re: [Lazarus-es] Sentencia larga Sql El 13 de agosto de 2015, 13:34, Maxi < maximiliano.duarte en gmail.com > escribi�: quotedString() Excelente lo suyo... Quedo asi, lcSql:='SELECT RF.RDB$FIELD_NAME AS FIELD_NAME,CASE FL.RDB$FIELD_TYPE '+ ' WHEN 7 THEN '+QuotedStr('SMALLINT')+ ' WHEN 8 THEN '+QuotedStr('INTEGER')+ ' WHEN 9 THEN '+QuotedStr('QUAD')+ ' WHEN 10 THEN '+QuotedStr('FLOAT')+ ' WHEN 11 THEN '+QuotedStr('D_FLOAT')+ ' WHEN 12 THEN '+QuotedStr('DATE')+ ' WHEN 13 THEN '+QuotedStr('TIME')+ ' WHEN 14 THEN '+QuotedStr('CHAR')+ ' WHEN 16 THEN '+QuotedStr('INT64')+ ' WHEN 27 THEN '+QuotedStr('DOUBLE')+ ' WHEN 35 THEN '+QuotedStr('TIMESTAMP')+ ' WHEN 37 THEN '+QuotedStr('VARCHAR')+ ' WHEN 40 THEN '+QuotedStr('CSTRING')+ ' WHEN 261 THEN '+QuotedStr('CSTRING')+ ' ELSE '+QuotedStr('DESCONOCIDO')+ ' END AS FIELD_TYPE,'+ ' FL.RDB$FIELD_LENGTH AS FIELD_LENGTH,'+ ' COALESCE(CS.RDB$CHARACTER_SET_NAME,'''') AS FIELD_CHARSET'+ ' FROM RDB$RELATION_FIELDS RF '+ ' LEFT JOIN RDB$FIELDS FL ON RF.RDB$FIELD_SOURCE = FL.RDB$FIELD_NAME'+ ' LEFT JOIN RDB$CHARACTER_SETS CS ON FL.RDB$CHARACTER_SET_ID = CS.RDB$CHARACTER_SET_ID'+ ' WHERE RF.RDB$RELATION_NAME=:nomTabla AND RF.RDB$FIELD_NAME=:nomCampo'+ ' ORDER BY RF.RDB$FIELD_POSITION'; ModuloDatos.qAccionSql.SQL.Text:=lcSql; ModuloDatos.qAccionSql.Params.ParamByName('nomTabla').AsString:=lcTabla; ModuloDatos.qAccionSql.Params.ParamByName('nomCampo').AsString:=lcCampo; Saludos y Gracias, Pancho C�rdoba Argentina

Reply by email

francisco prieto
to Jose antonio Cuello Principal

Jos�
Te respondo cada una.
1) estoy generando una clase gen�rica, con la cual surgen distintas combinaciones, algunas m�s l�gicas que otras, pero todas v�lidas.
2) Eso fue simplemente una prueba, pero de todos modos, a tiempo de ejecuci�n si dividido la sentencia en distintos add da error de prepare.
3) La idea ah� era hacer una funci�n, sin depender del motor. Se me ocurri� probar en este caso, con una consulta medianamente compleja.

Muchas gracias igual por tus apreciaciones.

Saludos
Pancho
C�rdoba
Argentina

El vie, 14 de agosto de 2015 03:43, Jose antonio Cuello Principal < jcuello en artextrading.com> escribi�:

Show quoted text 90 lines
Hola, comentar alguna cosa que he visto. 1) Si usas una variable string para montar la sentencia, �por qu� usar par�metros? directamente suma los valores a la cadena. A menos que vayas a usar el sql en un bucle donde se ejecutar� con distintos valores, pero en el ejemplo no indicabas esa condici�n. 2) Si usas un TString, como la propiedad SQL del dataset, no necesitas insertar los espacios para separar las distintas partes de la sentencia. Ni al final de la linea anterior ni al comienzo de la nueva. ejplo: midataset.SQL.Add('SELECT *') midataset.SQL.Add('FROM mitabla'); 3) Dependiendo del motor de bases de datos, puedes crear una vista o una funci�n que te realice la conversi�n del FIELD_TYPE quedando la sentencia m�s limpia y no teniendo que escribir el case en cada uso. Espero pueda ser de ayuda. Un saludo ------------------------------ *De: *"francisco prieto" <fajprieto en gmail.com> *Para: *"Spanish version of Lazarus List" < lazarus-es en lists.lazarus.freepascal.org> *Enviados: *Viernes, 14 de Agosto 2015 3:00:47 *Asunto: *Re: [Lazarus-es] Sentencia larga Sql El 13 de agosto de 2015, 13:34, Maxi <maximiliano.duarte en gmail.com> escribi�: > quotedString() Excelente lo suyo... Quedo asi, lcSql:='SELECT RF.RDB$FIELD_NAME AS FIELD_NAME,CASE FL.RDB$FIELD_TYPE '+ ' WHEN 7 THEN '+QuotedStr('SMALLINT')+ ' WHEN 8 THEN '+QuotedStr('INTEGER')+ ' WHEN 9 THEN '+QuotedStr('QUAD')+ ' WHEN 10 THEN '+QuotedStr('FLOAT')+ ' WHEN 11 THEN '+QuotedStr('D_FLOAT')+ ' WHEN 12 THEN '+QuotedStr('DATE')+ ' WHEN 13 THEN '+QuotedStr('TIME')+ ' WHEN 14 THEN '+QuotedStr('CHAR')+ ' WHEN 16 THEN '+QuotedStr('INT64')+ ' WHEN 27 THEN '+QuotedStr('DOUBLE')+ ' WHEN 35 THEN '+QuotedStr('TIMESTAMP')+ ' WHEN 37 THEN '+QuotedStr('VARCHAR')+ ' WHEN 40 THEN '+QuotedStr('CSTRING')+ ' WHEN 261 THEN '+QuotedStr('CSTRING')+ ' ELSE '+QuotedStr('DESCONOCIDO')+ ' END AS FIELD_TYPE,'+ ' FL.RDB$FIELD_LENGTH AS FIELD_LENGTH,'+ ' COALESCE(CS.RDB$CHARACTER_SET_NAME,'''') AS FIELD_CHARSET'+ ' FROM RDB$RELATION_FIELDS RF '+ ' LEFT JOIN RDB$FIELDS FL ON RF.RDB$FIELD_SOURCE = FL.RDB$FIELD_NAME'+ ' LEFT JOIN RDB$CHARACTER_SETS CS ON FL.RDB$CHARACTER_SET_ID = CS.RDB$CHARACTER_SET_ID'+ ' WHERE RF.RDB$RELATION_NAME=:nomTabla AND RF.RDB$FIELD_NAME=:nomCampo'+ ' ORDER BY RF.RDB$FIELD_POSITION'; ModuloDatos.qAccionSql.SQL.Text:=lcSql; ModuloDatos.qAccionSql.Params.ParamByName('nomTabla').AsString:=lcTabla; ModuloDatos.qAccionSql.Params.ParamByName('nomCampo').AsString:=lcCampo; Saludos y Gracias, Pancho C�rdoba Argentina _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es -- Jos� Antonio Cuello Artex Trading sa Gold Football sl _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20150814/5d305da2/attachment.html>

Reply by email

Maxi
to francisco prieto

EL ADD te fall� por las comillas

const
cte_consulta='select * from mi tabla where %s'

en feneral yo uso

sql.text:= format(cte_consulta,[parametros]);

igualmente, esa informacion te la dan los objetos de la consulta. Y si usas las ZeosLib tienen un componente TSqlMetaData que te ofrece cualquier informacion sin importar el motor.

El d�a 14 de agosto de 2015, 8:05, francisco prieto <fajprieto en gmail.com> escribi�:

Show quoted text 116 lines
Jos� Te respondo cada una. 1) estoy generando una clase gen�rica, con la cual surgen distintas combinaciones, algunas m�s l�gicas que otras, pero todas v�lidas. 2) Eso fue simplemente una prueba, pero de todos modos, a tiempo de ejecuci�n si dividido la sentencia en distintos add da error de prepare. 3) La idea ah� era hacer una funci�n, sin depender del motor. Se me ocurri� probar en este caso, con una consulta medianamente compleja. Muchas gracias igual por tus apreciaciones. Saludos Pancho C�rdoba Argentina El vie, 14 de agosto de 2015 03:43, Jose antonio Cuello Principal <jcuello en artextrading.com> escribi�: > > Hola, comentar alguna cosa que he visto. > > 1) Si usas una variable string para montar la sentencia, �por qu� usar > par�metros? directamente suma los valores a la cadena. A menos que vayas a > usar el sql en un bucle donde se ejecutar� con distintos valores, pero en el > ejemplo no indicabas esa condici�n. > > 2) Si usas un TString, como la propiedad SQL del dataset, no necesitas > insertar los espacios para separar las distintas partes de la sentencia. Ni > al final de la linea anterior ni al comienzo de la nueva. > ejplo: midataset.SQL.Add('SELECT *') > midataset.SQL.Add('FROM mitabla'); > > 3) Dependiendo del motor de bases de datos, puedes crear una vista o una > funci�n que te realice la conversi�n del FIELD_TYPE quedando la sentencia > m�s limpia y no teniendo que escribir el case en cada uso. > > Espero pueda ser de ayuda. Un saludo > > ________________________________ > De: "francisco prieto" <fajprieto en gmail.com> > Para: "Spanish version of Lazarus List" > <lazarus-es en lists.lazarus.freepascal.org> > Enviados: Viernes, 14 de Agosto 2015 3:00:47 > Asunto: Re: [Lazarus-es] Sentencia larga Sql > > > > El 13 de agosto de 2015, 13:34, Maxi <maximiliano.duarte en gmail.com> > escribi�: >> >> quotedString() > > > > Excelente lo suyo... > > Quedo asi, > > lcSql:='SELECT RF.RDB$FIELD_NAME AS FIELD_NAME,CASE FL.RDB$FIELD_TYPE '+ > ' WHEN 7 THEN '+QuotedStr('SMALLINT')+ > ' WHEN 8 THEN '+QuotedStr('INTEGER')+ > ' WHEN 9 THEN '+QuotedStr('QUAD')+ > ' WHEN 10 THEN '+QuotedStr('FLOAT')+ > ' WHEN 11 THEN '+QuotedStr('D_FLOAT')+ > ' WHEN 12 THEN '+QuotedStr('DATE')+ > ' WHEN 13 THEN '+QuotedStr('TIME')+ > ' WHEN 14 THEN '+QuotedStr('CHAR')+ > ' WHEN 16 THEN '+QuotedStr('INT64')+ > ' WHEN 27 THEN '+QuotedStr('DOUBLE')+ > ' WHEN 35 THEN '+QuotedStr('TIMESTAMP')+ > ' WHEN 37 THEN '+QuotedStr('VARCHAR')+ > ' WHEN 40 THEN '+QuotedStr('CSTRING')+ > ' WHEN 261 THEN '+QuotedStr('CSTRING')+ > ' ELSE '+QuotedStr('DESCONOCIDO')+ > ' END AS FIELD_TYPE,'+ > ' FL.RDB$FIELD_LENGTH AS FIELD_LENGTH,'+ > ' COALESCE(CS.RDB$CHARACTER_SET_NAME,'''') AS FIELD_CHARSET'+ > ' FROM RDB$RELATION_FIELDS RF '+ > ' LEFT JOIN RDB$FIELDS FL ON RF.RDB$FIELD_SOURCE = FL.RDB$FIELD_NAME'+ > ' LEFT JOIN RDB$CHARACTER_SETS CS ON FL.RDB$CHARACTER_SET_ID = > CS.RDB$CHARACTER_SET_ID'+ > ' WHERE RF.RDB$RELATION_NAME=:nomTabla AND RF.RDB$FIELD_NAME=:nomCampo'+ > ' ORDER BY RF.RDB$FIELD_POSITION'; > ModuloDatos.qAccionSql.SQL.Text:=lcSql; > ModuloDatos.qAccionSql.Params.ParamByName('nomTabla').AsString:=lcTabla; > ModuloDatos.qAccionSql.Params.ParamByName('nomCampo').AsString:=lcCampo; > > Saludos y Gracias, > > Pancho > C�rdoba > Argentina > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es > > > > -- > Jos� Antonio Cuello > Artex Trading sa > Gold Football sl > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml Linux User #495070 http://domonetic.com/blog

Reply by email

francisco prieto
to Maxi

Muchas gracias por la respuesta, yo me habia quedado con que eso no funcionaba.

Saludos,

Pancho
C�rdoba
Argentina

El 14 de agosto de 2015, 10:46, Maxi <maximiliano.duarte en gmail.com> escribi�:

Show quoted text 161 lines
EL ADD te fall� por las comillas const cte_consulta='select * from mi tabla where %s' en feneral yo uso sql.text:= format(cte_consulta,[parametros]); igualmente, esa informacion te la dan los objetos de la consulta. Y si usas las ZeosLib tienen un componente TSqlMetaData que te ofrece cualquier informacion sin importar el motor. El d�a 14 de agosto de 2015, 8:05, francisco prieto <fajprieto en gmail.com> escribi�: > Jos� > Te respondo cada una. > 1) estoy generando una clase gen�rica, con la cual surgen distintas > combinaciones, algunas m�s l�gicas que otras, pero todas v�lidas. > 2) Eso fue simplemente una prueba, pero de todos modos, a tiempo de > ejecuci�n si dividido la sentencia en distintos add da error de prepare. > 3) La idea ah� era hacer una funci�n, sin depender del motor. Se me ocurri� > probar en este caso, con una consulta medianamente compleja. > > Muchas gracias igual por tus apreciaciones. > > Saludos > Pancho > C�rdoba > Argentina > > > El vie, 14 de agosto de 2015 03:43, Jose antonio Cuello Principal > <jcuello en artextrading.com> escribi�: >> >> Hola, comentar alguna cosa que he visto. >> >> 1) Si usas una variable string para montar la sentencia, �por qu� usar >> par�metros? directamente suma los valores a la cadena. A menos que vayas a >> usar el sql en un bucle donde se ejecutar� con distintos valores, pero en el >> ejemplo no indicabas esa condici�n. >> >> 2) Si usas un TString, como la propiedad SQL del dataset, no necesitas >> insertar los espacios para separar las distintas partes de la sentencia. Ni >> al final de la linea anterior ni al comienzo de la nueva. >> ejplo: midataset.SQL.Add('SELECT *') >> midataset.SQL.Add('FROM mitabla'); >> >> 3) Dependiendo del motor de bases de datos, puedes crear una vista o una >> funci�n que te realice la conversi�n del FIELD_TYPE quedando la sentencia >> m�s limpia y no teniendo que escribir el case en cada uso. >> >> Espero pueda ser de ayuda. Un saludo >> >> ________________________________ >> De: "francisco prieto" <fajprieto en gmail.com> >> Para: "Spanish version of Lazarus List" >> <lazarus-es en lists.lazarus.freepascal.org> >> Enviados: Viernes, 14 de Agosto 2015 3:00:47 >> Asunto: Re: [Lazarus-es] Sentencia larga Sql >> >> >> >> El 13 de agosto de 2015, 13:34, Maxi <maximiliano.duarte en gmail.com> >> escribi�: >>> >>> quotedString() >> >> >> >> Excelente lo suyo... >> >> Quedo asi, >> >> lcSql:='SELECT RF.RDB$FIELD_NAME AS FIELD_NAME,CASE FL.RDB$FIELD_TYPE '+ >> ' WHEN 7 THEN '+QuotedStr('SMALLINT')+ >> ' WHEN 8 THEN '+QuotedStr('INTEGER')+ >> ' WHEN 9 THEN '+QuotedStr('QUAD')+ >> ' WHEN 10 THEN '+QuotedStr('FLOAT')+ >> ' WHEN 11 THEN '+QuotedStr('D_FLOAT')+ >> ' WHEN 12 THEN '+QuotedStr('DATE')+ >> ' WHEN 13 THEN '+QuotedStr('TIME')+ >> ' WHEN 14 THEN '+QuotedStr('CHAR')+ >> ' WHEN 16 THEN '+QuotedStr('INT64')+ >> ' WHEN 27 THEN '+QuotedStr('DOUBLE')+ >> ' WHEN 35 THEN '+QuotedStr('TIMESTAMP')+ >> ' WHEN 37 THEN '+QuotedStr('VARCHAR')+ >> ' WHEN 40 THEN '+QuotedStr('CSTRING')+ >> ' WHEN 261 THEN '+QuotedStr('CSTRING')+ >> ' ELSE '+QuotedStr('DESCONOCIDO')+ >> ' END AS FIELD_TYPE,'+ >> ' FL.RDB$FIELD_LENGTH AS FIELD_LENGTH,'+ >> ' COALESCE(CS.RDB$CHARACTER_SET_NAME,'''') AS FIELD_CHARSET'+ >> ' FROM RDB$RELATION_FIELDS RF '+ >> ' LEFT JOIN RDB$FIELDS FL ON RF.RDB$FIELD_SOURCE = FL.RDB$FIELD_NAME'+ >> ' LEFT JOIN RDB$CHARACTER_SETS CS ON FL.RDB$CHARACTER_SET_ID = >> CS.RDB$CHARACTER_SET_ID'+ >> ' WHERE RF.RDB$RELATION_NAME=:nomTabla AND RF.RDB$FIELD_NAME=:nomCampo'+ >> ' ORDER BY RF.RDB$FIELD_POSITION'; >> ModuloDatos.qAccionSql.SQL.Text:=lcSql; >> ModuloDatos.qAccionSql.Params.ParamByName('nomTabla').AsString:=lcTabla; >> ModuloDatos.qAccionSql.Params.ParamByName('nomCampo').AsString:=lcCampo; >> >> Saludos y Gracias, >> >> Pancho >> C�rdoba >> Argentina >> >> _______________________________________________ >> Lazarus-es mailing list >> Lazarus-es en lists.lazarus.freepascal.org >> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es >> >> >> >> -- >> Jos� Antonio Cuello >> Artex Trading sa >> Gold Football sl >> _______________________________________________ >> Lazarus-es mailing list >> Lazarus-es en lists.lazarus.freepascal.org >> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es > -- El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml Linux User #495070 http://domonetic.com/blog _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20150814/cdd5ee05/attachment-0001.html>

Reply by email