Elizabeth, genera una consulta Query y la ordenas descendentemente de tal manera que el primer registro es el más actual. Debe tener al menos un índice para ello, y en la consulta pones al final "ORDER BY ... ASC"
Luego en el Qreport, creas un dato como quieras, un QRBDText por ejemplo y lo enlazas al campo actual, como el registro es el último al que apunta te saldrá solamente un registro y que casualmente es el que necesitas.
Sobre la consulta
QUICKREPORT28.Query1.ACTIVE:=FALSE;
QUICKREPORT28.QUERY1.PARAMBYNAME('TURNO.DNI').ASINTEGER:=2;
QUICKREPORT28.QUERY1.ACTIVE:=TRUE;
Está equivocada, si quieres añadir el dato DNI lo primero es alfanumérico, lo segundo se añade directamente el nombre como lo tengas en la consulta, esto es, si tienes algo así
SELECT * FROM TB WHERE DNI =: DNI
recuerda que el dato se asigna como
QUICKREPORT28.QUERY1.PARAMBYNAME('DNI').ASSTRING:='555359299A' , por ejemplo...
No obstante, te recomiendo que generes la SQL directamente en código sin usar parámetros ya que aumenta el consumo de memoria. Es decir, es mejor generarl el código de esta manera
QUERY1.SQL.Close;
QUERY1.SQL.Unprepare;
QUERY1.SQL.Clear;
QUERY1.SQL.Add('SELECT * FROM ');
etc..
y para hacer la comparativa de WHERE
QUERY1.SQL.ADD('WHERE DNI = '+''''+ datodelDNI+ '''')
De esta manera de compara con la exclusividad del DNI.
Si además ordenas ascendentemente solamente tienes que acudir al primer registro, normalmente ya viene por defecto al ejecutar la Query con Prepare por ejemplo.
|