Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Ayuda con un reporte y select iff access (https://www.clubdelphi.com/foros/showthread.php?t=74849)

escorpionrojo43 14-07-2011 18:34:24

Ayuda con un reporte y select iff access
 
Hola Tengo un problemita con un reporte en report builder despues de mucha busqueda logre ejecutar este query en access


Código SQL [-]
SELECT IIF[jugada]= :edit1.text,[valor]*100,IIf([jugada]= :edit2.text,[valor]*10,IIf([jugada]= :edit3.text,[valor]*1," "))) as Virtualfield, *
FROM TICKET_DETALLE where fecha = :DateTimePicker1.date;

el asunto es que Virtualfield es un campo virtual y no se como traerlo en el reporte.

tambien tengo esto en mi codigo en delphi
Código Delphi [-]
procedure TFregistroNumeros.Button2Click(Sender: TObject);
begin
    with qry_rep_numeros, sql do
  begin
    //Construye query con datos del reporte.
    Close;
    Clear;
    Add('SELECT =IIf([jugada]='+quotedstr(edit1.Text)+',"Primera",IIf([jugada]='+quotedstr(edit2.Text)+',"Segunda",IIf([jugada]='+quotedstr(edit2.Text)+',"tercera"," "))) AS campo11, *');
    Add('From ticket_detalle');
    Add('WHERE loteria = '+inttostr(combobox1.ItemIndex));
    Add('and fecha = '+'#'+FormatDateTime('yyyy-mm-dd', (DateTimePicker1.Date))+'#');
    Add('order by len(jugada)');
    open;
    if eof then
    begin
      ShowMessage('No se encontraron registros. Por favor verífique los criterios indicados!.');
      exit;
      next;
    end;
    first;
  end;
  rep_ganadores.Print;
end

si es posible tambien tengo un campo disponible en base de datos pero tampoco se como pasar los valores del virtualfield a este campo disponible
Espero que me puedan dar una solucion. Gracias
:confused:

maeyanes 14-07-2011 18:44:41

Hola...

Puede que esto sea lo que necesitas:

Código Delphi [-]
var
  VirtualFied: string;

begin
  VirtualField := qry_rep_numeros.FieldByName('VirtualField').AsString
end;

Esto es solo un ejemplo de como puedes referencias un campo por su nombre.


Saludos...

escorpionrojo43 14-07-2011 19:06:57

Gracias por tu respuesta aunque ya se como referirse a los campos esta respuesta no me ayuda a mostrar el valor del cammpo en el reporte. seguro estoy cometiendo algun error o no he comprendido bien. si pudieras ser mas espesifico te lo agradeciria aun mas

maeyanes 14-07-2011 19:10:31

Hola...

¿Ya configuraste bien los componentes para el reporte? ¿El TrbDBPipeline, TDataSource, TrbReport etc?

Si es así, en la ventana de diseño del reporte deberías poder bien los campos que te devuelve la consulta.


Saludos...

escorpionrojo43 14-07-2011 19:43:37

Ok muchas gracias por tu respuesta.
Ya me ha funcionado. es que no retaba poniendo las cosas bien

pero ahora quiero que el query me traiga solo los valores proporcionados en los Tedit.
con este query me trae todo y me muestra el el campo virtual solo los que cumplen con con los tedit


ejemplo

a los t edit les pongo los valores 1, 2, 3

el query
me trae

1 primera
2 segunda
3 tercera
4
5
6
...

y quiero que me traiga solo

1 primera
2 segunda
3 tercera

juanlaplata 08-08-2011 13:40:16

Para esto ultimo añade a tu query
Código SQL [-]
SELECT top 3, ...
Esta instruccion solo te dara las 3 primeras filas del resultado.
Saludos.
Suerte

oscarac 08-08-2011 16:16:18

mmmm no creo que esa sea la respuesta adecuada, porque solo traeria los 3 primeros que no necesariamente son los datos que estan en el edit

lo que creo es que en el query deberias colocar en el where adicional a la fecha la condicion que la jugada sea igual a los edit algo asi


Código Delphi [-]
 
where jugada = :edit1.text or jugada = :edit2.text or jugada = :edit3.text


La franja horaria es GMT +2. Ahora son las 03:23:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi