<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>