Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-06-2005
CarmaZone CarmaZone is offline
Miembro
 
Registrado: mar 2005
Posts: 59
Poder: 22
CarmaZone Va por buen camino
Creo que no me expliqué muy bien xDD. Ya está programado la creación de 1 albarán y 1 factura, con sus tablas factura y línea factura... típico xD

La duda era si es razonable usar un bucle para recorrer los albaranes y a su vez cada una de las líneas de ese albarán e ir guardando con 2 whiles.

Por ahora he hecho esto:

Código:
      DataModule_Fact_Albar.Query_Alb.First;
      DataModule_Fact_Albar.Query_Alb.DisableControls;
      while not(DataModule_Fact_Albar.Query_Alb.Eof) do
      begin
          DataModule_Fact_Albar.Query_Lin_Alb.First;
          DataModule_Fact_Albar.Query_Lin_Alb.DisableControls;
          while not(DataModule_Fact_Albar.Query_Lin_Alb.Eof) do
          begin
              with DataModule_Fact_Albar do
              begin
                  Query_Lin_Fact.Edit;
                  Query_Lin_FactCANTIDAD.Value:=Query_Lin_AlbCANTIDAD.Value;
                  Query_Lin_FactCONCEPTO.Value:=Query_Lin_AlbCONCEPTO.Value;
                  Query_Lin_FactPRECIOUNIDAD.Value:=Query_Lin_AlbPRECIOUNIDAD.Value;
                  Query_Lin_FactTOTAL.Value:=Query_Lin_AlbTOTAL.Value;
                  Query_Lin_Fact.Post;
                  Query_Lin_Alb.Next;
              end;
          end;
          DataModule_Fact_Albar.Query_Lin_Alb.EnableControls;
          DataModule_Fact_Albar.Query_Alb.Next;
      end;
      DataModule_Fact_Albar.Query_Alb.EnableControls;
Pero sólo me guarda la ultima línea del 1º albarán

Salu2!!!

Última edición por CarmaZone fecha: 27-06-2005 a las 18:38:20.
Responder Con Cita
  #2  
Antiguo 27-06-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Código Delphi [-]
      DataModule_Fact_Albar.Query_Alb.First;
      DataModule_Fact_Albar.Query_Alb.DisableControls;
      while not(DataModule_Fact_Albar.Query_Alb.Eof) do
      begin
          DataModule_Fact_Albar.Query_Lin_Alb.First;
          DataModule_Fact_Albar.Query_Lin_Alb.DisableControls;
          while not(DataModule_Fact_Albar.Query_Lin_Alb.Eof) do
          begin
              with DataModule_Fact_Albar do
              begin
                  Query_Lin_Fact.Edit;
                  Query_Lin_FactCANTIDAD.Value:=Query_Lin_AlbCANTIDAD.Value;
                  Query_Lin_FactCONCEPTO.Value:=Query_Lin_AlbCONCEPTO.Value;
                  Query_Lin_FactPRECIOUNIDAD.Value:=Query_Lin_AlbPRECIOUNIDAD.Value;
                  Query_Lin_FactTOTAL.Value:=Query_Lin_AlbTOTAL.Value;
                  Query_Lin_Fact.Post;
                  Query_Lin_Alb.Next;
              end;
          end;
          DataModule_Fact_Albar.Query_Lin_Alb.EnableControls;
          DataModule_Fact_Albar.Query_Alb.Next;
      end;
      DataModule_Fact_Albar.Query_Alb.EnableControls;
Te equivocas, lo añade todo, el problema es que estas haciendo un Query_Lin_Fact.Edit, por tanto, todos los albaranes se machacan en la misma linea de la factura. ¿No Debería ser Query_Lin_Fact.Append?

Por otra parte.... yo usaría tbl_Lin_Fact, la tabla, en lugar de un Query.

Supongo que es un extracto del código, ya que no se crean nuevos registros en la tabla Facturas, y siendo una relación Maestro-Detalle, debe crearse la Factura antes que las lineas de factura.

En cuanto a la pregunta original, se podría hacer con consultas de inserción.... pero tal cual está, es más simple.

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 27-06-2005
CarmaZone CarmaZone is offline
Miembro
 
Registrado: mar 2005
Posts: 59
Poder: 22
CarmaZone Va por buen camino
Es verda tio, que se está machacando xDDDDDDDD, he cambiado "edit" por append y ahora lo hace pero da un problema.

Si convierto de 1 albarán a 1 factura lo hace perfecto, mete bien el cuerpo, sin embargo si la conversión es de 2 albaranes a 1 factura, me mete las líneas dobles , me mete 2 veces el cuerpo del 1º albarán y el cuerpo del 2º albarán no lo mete. Tiene haber algo mal en esa parte del codigo que me hace una pasada la 1º pasada 2 veces y ya no hace más.

Gracias Y Salu2!!!

Última edición por CarmaZone fecha: 27-06-2005 a las 20:57:15.
Responder Con Cita
  #4  
Antiguo 27-06-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Si query_Lin_Alb tiene los albaranes a meter en cada linea de factura. ¿Qué tiene query_Alb?

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 27-06-2005
CarmaZone CarmaZone is offline
Miembro
 
Registrado: mar 2005
Posts: 59
Poder: 22
CarmaZone Va por buen camino
Albaran: nº albaran,fecha,cliente,base imponible..
Linea Albaran: cantidad, concepto,precio/unidad, total

Factura: nº factura,fecha,cliente, cif,base imponible, iva...
Linea Factura: cantidad, concepto,precio/unidad, total

Yo meto en query_fact desde query_alb el nombre del cliente y su CIF y en query_lin_fact voy metiendo las lineas de query_lin_alb.

Mi conversión me crea bien la cabecera de la factura, (nº factura, fecha, cliente...) lo que falla es la copia del cuerpo de varios albaranes al cuerpo de 1 sola factura

Salu2!!!

Última edición por CarmaZone fecha: 27-06-2005 a las 21:11:32.
Responder Con Cita
  #6  
Antiguo 27-06-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Parte de culpa de todo esto lo tienen los nombres, mira este codigo, es identico al tuyo, pero cambiando los nombres de query_lin_alb y query_alb, ya que no se corresponde con los datos que representa, y lo único que hace es "molestar". Es importante dar nombres descriptivos

Código Delphi [-]
with DataModule_Fact_Albar do
begin
      qry_Clientes.First;
      Query_Clientes.DisableControls;
      while not(qry_Clientes.Eof) do
      begin
          qry_Alb_A_Facturar.First;
          qry_Alb_A_Facturar.DisableControls;
          while not(qry_Alb_A_Facturar.Eof) do
          begin
                  query_Lin_Fact.Append;
                 Query_Lin_FactCANTIDAD.Value:=qry_Alb_A_FacturarCANTIDAD.Value;
                  Query_Lin_FactCONCEPTO.Value:=qry_Alb_A_FacturarCONCEPTO.Value;
                  Query_Lin_FactPRECIOUNIDAD.Value:=qry_Alb_A_FacturarPRECIOUNIDAD.Value;
                  Query_Lin_FactTOTAL.Value:=qry_Alb_A_FacturarTOTAL.Value;
                  Query_Lin_Fact.Post;
                  qry_Alb_A_Facturar.Next;
          end;
          qry_Alb_A_Facturar.EnableControls;
          qry_Clientes.Next; // salto de cliente
      end;
      qry_Clientes.EnableControls;
end;

Yo al menos lo veo más claro, para cada cliente, se mira los albaranes que tiene que facturar, y para cada uno de ellos se crea la linea de factura.

Tu problema reside en la relación que has definido entre qry_Clientes y qry_Alb_A_Facturar. Esa relación seguro que no está bien.

Si quieres ver mejor el fallo, da de alta 4 clientes, 3 albaranes por cada cliente y manda a facturar

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #7  
Antiguo 27-06-2005
CarmaZone CarmaZone is offline
Miembro
 
Registrado: mar 2005
Posts: 59
Poder: 22
CarmaZone Va por buen camino
Revisare tu codigo, pero he de decir que no tengo relacionado cliente con factura ni albaranes, cada albaran o factura guarda su propio campo nombre_cliente... por lo tanto de ahi no viene el problema, mi relacion es albaran con linea_albaran y lo mismo para factura. De ahi los nombres:

Query_Alb y Query_Lin_Alb--> quey albaran y query linea albaran y lo mismo para facturas, creo que los nombre son descriptivos xDDDD

Voy a seguir probando.

Gracias y Salu2!!!

Edito: Tu trozo de codigo es una relación cliente-albarán que en mi caso equivale a albaran-línea_albaran. Lo he peusto como en tu ejemplo:

Código:
    with DataModule_Fact_Albar do
      begin
          Query_Alb.First;
          Query_Alb.DisableControls;
          while not(Query_Alb.Eof) do
          begin
              Query_Lin_Alb.First;
              Query_Lin_Alb.DisableControls;
              while not(Query_Lin_Alb.Eof) do
              begin
                  Query_Lin_Fact.Append;
                  Query_Lin_FactCANTIDAD.Value:=Query_Lin_AlbCANTIDAD.Value;
                  Query_Lin_FactCONCEPTO.Value:=Query_Lin_AlbCONCEPTO.Value;
                  Query_Lin_FactPRECIOUNIDAD.Value:=Query_Lin_AlbPRECIOUNIDAD.Value;
                  Query_Lin_FactTOTAL.Value:=Query_Lin_AlbTOTAL.Value;
                  Query_Lin_Fact.Post;
                  Query_Lin_Alb.Next;
              end;
              Query_Lin_Alb.EnableControls;
              Query_Alb.Next;
          end;
          Query_Alb.EnableControls;
      end;
Y pasa lo mismo, me mete 2 veces las líneas del 1º albarán y no me guardas las del 2º

Última edición por CarmaZone fecha: 27-06-2005 a las 22:03:42.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 10:43:29.


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