Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problemas Formularios para reportes (https://www.clubdelphi.com/foros/showthread.php?t=45776)

magnu9 13-07-2007 16:04:34

Problemas Formularios para reportes
 
Saludos foreros, tengo el siguiente código lo utilizo para un reporte de cliente, en el formulario tengo lo siguiente:
- Tres seis edit dos para cada condición. Ejemplo dos para código de clietes desde el código 4 hasta el 9.

- Dos listbox los cuales utilizo para ordenar. En el listbox1 tengo en el string los campos de la tabla clientes, el listbox2 lo utilizo para obtener los campos de la tabla por lo que quiero ordenar el reporte.

- Tengo dos radiogroup uno para la salida (pantalla, impresora y archivo) el otro para ordenar acendente o decendente.

Problemas:

- Si al tirar el reporte dejo en blanco los edit para los código y coloco sobre los edit de nombre o apellido, me tira un error de imposible convertir varchar en numerico. O sea si quiero filtrar por los edit obligatoriamente debo llenar los edit de código.

- En los listbox por que debo de poner en el string los nombres de los campos de la tabla en este caso Codcli, Nomcli, Apecli etc. Me gustaria y para facilitar al usuario nombrar el string así (Código, Nombre, Apellido, etc.) sin tener que cambiar los nombres de los campos de las tabla. O sea pasarle al sql los nombres del string pero que este lo tome igual que los campos de la tabla.

- Como lanzar el reporte a un archivo.

Código Delphi [-]
procedure TrpCliente.btnAceptarClick(Sender: TObject);
var m: integer;
begin
 m:= ListBox2.Items.Count;
   try
   FicCliente:=TFicCliente.Create(self);
      if Ordenar.ItemIndex = 0 then begin
         FicCliente.querCliente.SQL.Add(' WHERE (cliente.codcli >= '''+(edCodigo1.Text)+''' AND cliente.codcli <= '''+(edCodigo2.Text)+''')');
         FicCliente.querCliente.SQL.Add('or (cliente.nomcli LIKE '''+edNombre1.text+'%'' AND cliente.nomcli LIKE '''+edNombre2.text+'%'')');
         FicCliente.querCliente.SQL.Add('or (cliente.apecli LIKE '''+edApellido1.text+'%'' AND cliente.apecli LIKE '''+edApellido2.text+'%'')');
         IF m=0 THEN
         FicCliente.querCliente.SQL.Add(' ORDER BY CODCLI ASC')
         else IF m=1 THEN
         FicCliente.querCliente.SQL.Add(' ORDER BY '+ListBox2.Items[0]+'')
         else IF m=2 THEN
         FicCliente.querCliente.SQL.Add(' ORDER BY '+ListBox2.Items[0]+','+ListBox2.Items[1]+'')
         else IF m=3 THEN
         FicCliente.querCliente.SQL.Add(' ORDER BY '+ListBox2.Items[0]+','+ListBox2.Items[1]+','+ListBox2.Items[2]+'')
         else IF m=4 THEN
         FicCliente.querCliente.SQL.Add(' ORDER BY '+ListBox2.Items[0]+','+ListBox2.Items[1]+','+ListBox2.Items[2]+','+ListBox2.Items[3]+'');
         FicCliente.querCliente.Open;
      end
        else  begin
           FicCliente.querCliente.SQL.Add(' Select  codcli,nomcli, dircli, telcli,cedcli, estado, codciu From cliente ');
           FicCliente.querCliente.SQL.Add(' WHERE cliente.codcli >='''+(edCodigo1.Text)+''' AND cliente.codcli <= '''+(edCodigo2.Text)+'''');
           FicCliente.querCliente.SQL.Add('OR cliente.nomcli='''+edNombre1.Text+''' and cliente.nomcli='''+edNombre2.Text+'''');
          IF ListBox2.ItemIndex=1 THEN
           FicCliente.querCliente.SQL.Add(' ORDER BY '+ListBox2.Items[0]+', '+ListBox2.Items[1]+'');
        end;
        
         FicCliente.querCliente.Open;
         FicCliente.Titulo.text := 'Reporte de Cliente';
         FicCliente.QuickRep1.DataSet:=FicCliente.querCliente;
         If Salida.ItemIndex = 0 then FicCliente.QuickRep1.Preview
           else if Salida.ItemIndex= 1 then FicCliente.QuickRep1.Print;
         finally
           FicCliente.Free;
      end;
end;

procedure TrpCliente.btnCancelarClick(Sender: TObject);
begin
  rpCliente.Close;
end;
procedure TrpCliente.btnEnviarClick(Sender: TObject);
begin
    if listbox1.ItemIndex>=0 then
  begin
    listbox2.Items.Add(listbox1.Items[listbox1.ItemIndex]);
    listbox1.Items.Delete(listbox1.ItemIndex);
  end;
end;
procedure TrpCliente.btnTraerClick(Sender: TObject);
begin
   if listbox2.ItemIndex>=0 then
   begin
    listbox1.Items.Add(listbox2.Items[listbox2.ItemIndex]);
    listbox2.Items.Delete(listbox2.ItemIndex);
   end;
end;
procedure TrpCliente.btnEnvTodClick(Sender: TObject);
var m:integer;
begin
   m:=listbox1.Items.Count;
 while m>=1 do
   begin
    listbox1.ItemIndex:=0;
    listbox2.Items.Add(listbox1.Items[listbox1.ItemIndex]);
    listbox1.Items.Delete(listbox1.ItemIndex);
    m:=m-1;
   end;
end;
procedure TrpCliente.btnTraerTodoClick(Sender: TObject);
var n:integer;
begin
  n:=listbox2.Items.Count;
 while n>=1 do
   begin
    listbox2.ItemIndex:=0;
    listbox1.Items.Add(listbox2.Items[listbox2.ItemIndex]);
    listbox2.Items.Delete(listbox2.ItemIndex);
    n:=n-1;
   end;
end;


La franja horaria es GMT +2. Ahora son las 20:55:07.

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