<div dir="ltr">Hola Hector.<div><br></div><div>No puedo hacer pruebas como para darte una respuesta mas precisa.</div><div>busqué el documento al que haces referencia y encontré un texto pero entiendo que 'el truco' de llamar a .last es solo para poder utilizar la propiedad RecordCount.</div><div><br></div><div>en el ejemplo que enviaste no veo que estés usando esa propiedad, ¿tenés dudas sobre el funcionamiento del select?</div><div><br></div><div>Creo que si tenés necesidad de ejecutar el método last deberías hacerlo así</div><div><span style="font-size:12.8px"> fdm.SQLQuery1.Last();</span><br></div><div><span style="font-size:12.8px"><br></span></div><div>si yo tuviese que la necesidad de saber la cantidad de registros de un query setearía la propiedad <span style="color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px;line-height:19.05px">.PacketRecords'</span><span style="color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px;line-height:19.05px"> </span>en -1 tal como se indica en el documento.</div><div><br></div><div>Lamento disponer de un lazarus para hacer pruebas.</div><div><br></div><div>saludos cordiales, es un gusto leerte otra vez.</div><div><br></div><div><a href="http://wiki.freepascal.org/SqlDBHowto">http://wiki.freepascal.org/SqlDBHowto</a><br></div><div><br></div><div><h3 style="color:rgb(0,0,0);margin:0px 0px 0.3em;overflow:hidden;padding-top:0.5em;padding-bottom:0.17em;border-bottom-style:none;font-size:16.764px;font-family:sans-serif;line-height:19.05px;background-image:none;background-size:initial;background-origin:initial;background-clip:initial;background-position:initial;background-repeat:initial"><span class="gmail-mw-headline" id="gmail-Why_does_TSQLQuery.RecordCount_always_return_10.3F">Why does TSQLQuery.RecordCount always return 10?</span></h3><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">To count the records in a dataset, use '.RecordCount'. However, notice that '.RecordCount' shows the number of records that is already loaded from the server. For performance reasons, SqlDB does not read all records when opening TSQLQuery by default, only the first 10. Only when the eleventh record is accessed will the next set of 10 records be loaded, etc. Using '.Last', all records will be loaded.</p><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">When you want to know the real number of records on the server you can first call '.Last' and then call '.RecordCount'.</p><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">An alternative is available. The number of records returned by the server is set by the '.PacketRecords' property. The default value is 10; if you make it -1 then all records will be loaded at once.</p><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">In current stable FPC, '.RecordCount' does not take filters into account, i.e. it shows the unfiltered total.</p><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">If you need the exact number of records, it often is a better idea to directly query the number of records in a query using another SQL query, but you would have to do that in the same transaction, as other transactions may have changed the number of records in the meanwhile.</p></div><div class="gmail_extra"><br><div class="gmail_quote">El 4 de noviembre de 2016, 7:20, hfiandor via Lazarus-es <span dir="ltr"><<a href="mailto:lazarus-es@lists.lazarus-ide.org" target="_blank">lazarus-es@lists.lazarus-ide.org</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">








<div lang="ES">

<div class="gmail-m_7980345349769747923Section1">

<p class="MsoNormal">Amigos listeros:<u></u><u></u></p>

<p class="MsoNormal"><u></u> <u></u></p>

<p class="MsoNormal">En el documento SQLdb How to do se explica por qué solamente
se leen los primeros 10 registros al ejecutar una consulta y brinda una
solución para que lea todos los registros. <u></u><u></u></p>

<p class="MsoNormal"><u></u> <u></u></p>

<p class="MsoNormal">Tengo una aplicación donde hago lo siguiente:<u></u><u></u></p>

<p class="MsoNormal"><span lang="EN-US">  begin<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">    fdm.SQLQuery1.Active := False;<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">    fdm.dsSQLQuery1.DataSet:=fdm.<wbr>tTemp2;<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">   
fdm.SQLite3Connection1.<wbr>DatabaseName:=camino_BD + '\temp.db';<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">    fdm.SQLQuery1.SQL.Text := 'SELECT *
FROM Temp2 WHERE codNegSerAct = :SelCodigoNegSerAct ORDER BY codNegSerAct';<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">   
fdm.SQLQuery1.Params.<wbr>ParamByName('<wbr>SelCodigoNegSerAct').AsString := SelNSA;<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">    fdm.SQLQuery1.ExecSQL;<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">    fdm.tTemp2.Last; //para que lea
completo<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">    if fdm.SQLQuery1.Active = False then
fdm.SQLQuery1.Active := True<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">    else begin end;<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">    fEstadoCuenta_2.frDBDataSet2.<wbr>DataSet :=
fdm.SQLQuery1;<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">    </span>fEstadoCuenta_2.frReport2.<wbr>LoadFromFile(camino_actual+'\<wbr>plantillas\Extendida_2.lrf');<u></u><u></u></p>

<p class="MsoNormal">    <span lang="EN-US">fEstadoCuenta_2.frReport2.<wbr>ShowReport;<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">    fdm.SQLQuery1.Close;<u></u><u></u></span></p>

<p class="MsoNormal"><span lang="EN-US">    </span>fdm.SQLTransaction1.Active :=
False;<u></u><u></u></p>

<p class="MsoNormal">    fdm.SQLite3Connection1.<wbr>Connected := False;<u></u><u></u></p>

<p class="MsoNormal"><u></u> <u></u></p>

<p class="MsoNormal">No tengo la certeza de haber escrito la instrucción   
fdm.tTemp2.Last; //para que lea completo en el lugar correcto.<u></u><u></u></p>

<p class="MsoNormal"><u></u> <u></u></p>

<p class="MsoNormal">Agradecería que alguien me comentara al respecto y cualquier
otra sugerencia que deseen.<u></u><u></u></p>

<p class="MsoNormal"><u></u> <u></u></p>

<p class="MsoNormal">Saludos<u></u><u></u></p>

<p class="MsoNormal">Ing. Héctor F. Fiandor Rosario<u></u><u></u></p>

<p class="MsoNormal"><u></u> <u></u></p>

</div>

</div>


<br>______________________________<wbr>_________________<br>
Lazarus-es mailing list<br>
<a href="mailto:Lazarus-es@lists.lazarus-ide.org">Lazarus-es@lists.lazarus-ide.<wbr>org</a><br>
<a href="http://lists.lazarus-ide.org/listinfo/lazarus-es" rel="noreferrer" target="_blank">http://lists.lazarus-ide.org/<wbr>listinfo/lazarus-es</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">Rafael Bidegain<br><br>Ya que los cuerdos no hablan, hablará el loco.<br>(The Fool, Padraic Pearse)<br><br># yo quiero educación libre. ¡YA!<br><br></div>
</div></div>