Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Fallo Nº Factura y Linea Factura (https://www.clubdelphi.com/foros/showthread.php?t=21425)

CarmaZone 17-05-2005 12:13:15

Fallo Nº Factura y Linea Factura
 
Hola a todos, espero que este sea el foro adecuado, no lo sabia seguro ya que tiene que ver con varias cosas creo.

Utilizo Delphi 6, y BDE con tablas paradox y TQuerys.

Tengo un formulario hijo con un boton "nueva factura" que me abre un form normal, pues bien, necesito que se me autogenere un Nº de factura para posteriormente, cuando añado una "linea de factura", el campo Nº Factura de la Line de Factura sea igual a la factura para poder relacionarlo.

Es decir: nueva factura --> Nº Factura (1) -->
Nueva Linea(Nº Factura(1), Linea(1)), Nueva Linea(Nº Factura(1), Linea(2))

Y asi, bueno el funcionamiendo normal jeje.

Mi BBDD esta así:

Factura: Nº Factura (Numerico)

Linea: Codigo (AutoIncremento), Nº Factura (Numerico)

He intentado poner un campo autonumerico a factura y asignarselo a Nº Factura en cada nueva inserccion y me lo hace bien, pero solo la 1º vez. He pprovado en el oncreate del form_nueva_factura, en el afterpost y onnewrecord del query_factura y de varias formas y solo consigo que me lo haga la 1º vez.

Espero me puedan aconsejar ya que no lo consigo, no tiene porque haber un autoincremento en la tabla factura ni nada, yo solo era intentando solucionarlo.

Espero haberme explicado lo mejor posible.

Muchas Gracias De Antemano y Salu2!!! :D

marcoszorrilla 17-05-2005 12:28:05

Utiliza una tabla auxiliar, y en ella guardas el último número de factura. En el evento OnNewRecord de la factura generas el nuevo número:
Código Delphi [-]
 MiFacturaNumero.Value:=MiTablaAuxiliarnumero.Value +1;

si se confirma la grabación de la factura:
Código Delphi [-]
 MiTablaAuxiliar.Edit;
 MiTablaAuxiliarnumero.Value:=MiFacturaNumero.Value;
 MiTablaAuxiliar.Post;
Un Saludo.

CarmaZone 17-05-2005 15:04:41

SIIIIIIIIIIIIIIIIIIIIII, AHORA SIIIIIIIIIIIII, MUCHISIMAS GRACIAS!!! Ya habia probado yo con una tabla auxiliar pero algo aría mal porque no me salía jeje.

Como yo usaba TQuerys pues al guardar la factura he tenido que poner esto:

Código:

   
//DataModule_Fact_Albar.Query_Fact.Edit;
DataModule_Fact_Albar.Query_NUM_FACT.Edit;
DataModule_Fact_Albar.Query_NUM_FACTNUM_FACT.Value:=DataModule_Fact_Albar.Query_FactNUM_FACT.Value;
DataModule_Fact_Albar.Query_NUM_FACT.Post;
DataModule_Fact_Albar.Query_Fact.Post;
Close;

He comentado la 1º línea porque al cerrar la ventana al guardar no lo necesita, si optara por no cerrarla, tendría que descomentar la 1º línea.

Explico lo que he echo por si a alguien le sirve.

Tengo echo un maestro detalle con factura/linea_factura.

Añado 1 factura y me coje el Nº Factura + 1 de la auxiliar (correcto) y al añadir una línea a dicha factura pues hago:

Código:

DataModule_Fact_Albar.Query_Lin_FactNUM_FACT.Value:=DataModule_Fact_Albar.Query_FactNUM_FACT.Value;
Y así consigo que las líneas que añado solo pertenecen a esa factura.

Bueno espero que le sirva a alguien. Si alguien tiene alguna duda sobre lo que he hecho le ayudaré en lo que pueda.

Pues nada marcoszorrilla muchas gracias de nuevo.

Salu2!!!

mazinger 17-05-2005 15:31:21

Lo que yo suelo hacer para campos que de tipo entero que son correlativos, como es el caso del nº de factura, ejecuto en un query independiente la sentencia:

Código:

  With Query do begin
        SQL.Add(SELECT Max(Num_Factura) as Maximo From Facturas);
        Open;
        NumeroFactura := FieldByName('Maximo').AsInteger + 1;
        Close;
  End;

Donde NumeroFactura es el campo de la tabla facturas
Con ello te aseguras que siempre obtienes un nº de factura sin utilizar.

CarmaZone 19-05-2005 23:52:02

Perdón, solucionado :D

PiPerraK 26-05-2005 11:17:19

motivao
 
xD posi tío, esta tarde cuando me ponga a hacer las facturas fijo ke me va servir tu gran ayuda en el foro xDDDDDD

ya keda menos pal proyecto, a ver si acaba ya el ciclo de una puta vez XDDDD


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

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