Ver Mensaje Individual
  #18  
Antiguo 05-07-2010
Jab Jab is offline
Miembro
 
Registrado: feb 2008
Posts: 83
Reputación: 0
Jab cantidad desconocida en este momento
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.
Responder Con Cita