<html><body><div style="font-family: times new roman, new york, times, serif; font-size: 12pt; color: #000000"><div>Hola, comentar alguna cosa que he visto.</div><div><br></div><div>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.</div><div><br></div><div>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.</div><div>        ejplo:    midataset.SQL.Add('SELECT *')</div><div>                     midataset.SQL.Add('FROM mitabla');</div><div><br></div><div>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.</div><div><br></div><div>Espero pueda ser de ayuda. Un saludo</div><div><br></div><hr id="zwchr"><div style="color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;" data-mce-style="color: #000; font-weight: normal; font-style: normal; text-decoration: none; font-family: Helvetica,Arial,sans-serif; font-size: 12pt;"><b>De: </b>"francisco prieto" <fajprieto@gmail.com><br><b>Para: </b>"Spanish version of Lazarus List" <lazarus-es@lists.lazarus.freepascal.org><br><b>Enviados: </b>Viernes, 14 de Agosto 2015 3:00:47<br><b>Asunto: </b>Re: [Lazarus-es] Sentencia larga Sql<br><div><br></div><div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">El 13 de agosto de 2015, 13:34, Maxi <span dir="ltr"><<a href="mailto:maximiliano.duarte@gmail.com" target="_blank" data-mce-href="mailto:maximiliano.duarte@gmail.com">maximiliano.duarte@gmail.com</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex" data-mce-style="margin: 0 0 0 .8ex; border-left: 1px #ccc solid; padding-left: 1ex;">quotedString()</blockquote></div><br><div><br></div></div><div class="gmail_extra">Excelente lo suyo...<br><div><br></div></div><div class="gmail_extra">Quedo asi,<br><div><br></div> lcSql:='SELECT RF.RDB$FIELD_NAME AS FIELD_NAME,CASE FL.RDB$FIELD_TYPE '+<br> ' WHEN   7 THEN '+QuotedStr('SMALLINT')+<br> ' WHEN   8 THEN '+QuotedStr('INTEGER')+<br> ' WHEN   9 THEN '+QuotedStr('QUAD')+<br> ' WHEN  10 THEN '+QuotedStr('FLOAT')+<br> ' WHEN  11 THEN '+QuotedStr('D_FLOAT')+<br> ' WHEN  12 THEN '+QuotedStr('DATE')+<br> ' WHEN  13 THEN '+QuotedStr('TIME')+<br> ' WHEN  14 THEN '+QuotedStr('CHAR')+<br> ' WHEN  16 THEN '+QuotedStr('INT64')+<br> ' WHEN  27 THEN '+QuotedStr('DOUBLE')+<br> ' WHEN  35 THEN '+QuotedStr('TIMESTAMP')+<br> ' WHEN  37 THEN '+QuotedStr('VARCHAR')+<br> ' WHEN  40 THEN '+QuotedStr('CSTRING')+<br> ' WHEN 261 THEN '+QuotedStr('CSTRING')+<br> ' ELSE '+QuotedStr('DESCONOCIDO')+<br> ' END AS FIELD_TYPE,'+<br> ' FL.RDB$FIELD_LENGTH AS FIELD_LENGTH,'+<br> ' COALESCE(CS.RDB$CHARACTER_SET_NAME,'''') AS FIELD_CHARSET'+<br> ' FROM RDB$RELATION_FIELDS RF '+<br> ' LEFT JOIN RDB$FIELDS FL ON RF.RDB$FIELD_SOURCE = FL.RDB$FIELD_NAME'+<br> ' LEFT JOIN RDB$CHARACTER_SETS CS ON FL.RDB$CHARACTER_SET_ID = CS.RDB$CHARACTER_SET_ID'+<br> ' WHERE RF.RDB$RELATION_NAME=:nomTabla AND RF.RDB$FIELD_NAME=:nomCampo'+<br> ' ORDER BY RF.RDB$FIELD_POSITION';<br> ModuloDatos.qAccionSql.SQL.Text:=lcSql;<br> ModuloDatos.qAccionSql.Params.ParamByName('nomTabla').AsString:=lcTabla;<br> ModuloDatos.qAccionSql.Params.ParamByName('nomCampo').AsString:=lcCampo;<br><div><br></div></div><div class="gmail_extra">Saludos y Gracias,<br><div><br></div></div><div class="gmail_extra">Pancho<br></div><div class="gmail_extra">Córdoba<br></div><div class="gmail_extra">Argentina<br></div></div><br>_______________________________________________<br>Lazarus-es mailing list<br>Lazarus-es@lists.lazarus.freepascal.org<br>http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es<br></div><div><br><br></div><div><br></div><div>-- <br></div><div><span name="x"></span>José Antonio Cuello<br>Artex Trading sa<br>Gold Football sl<span name="x"></span><br></div></div></body></html>