Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-07-2007
Avatar de magnu9
magnu9 magnu9 is offline
Miembro
 
Registrado: nov 2006
Posts: 84
Poder: 18
magnu9 Va por buen camino
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;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problemas con formularios (VIH)Lestat Conexión con bases de datos 6 22-06-2005 00:25:49
Consulta para reportes lledesma SQL 8 16-04-2004 17:46:11
problemas con formularios 2 santiago14 Varios 6 27-09-2003 05:59:03
Problemas con formularios santiago14 Varios 1 25-09-2003 16:20:16
Problemas con ordenamiento en reportes de una base Victor Conexión con bases de datos 2 14-05-2003 02:15:04


La franja horaria es GMT +2. Ahora son las 00:00:15.


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
Copyright 1996-2007 Club Delphi