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)
-   -   Incrementar en 1 un campo númerico (https://www.clubdelphi.com/foros/showthread.php?t=50946)

efelix 03-12-2007 15:21:52

Incrementar en 1 un campo númerico
 
Hola a todos. Tengo el siguiente problema. Trabajo en una aplicación dirigida a llevar el control de las facturas emitidas por mi organización. En un formulario capturo todos los datos relacionados con la misma. En el mismo tengo puesto un botón pra agregar una nueva factura. La base de datos que uso es access, el campo donde almaceno el número de la factura es de tipo númerico. Me gustaría que al presionar el botón agregar se incrementará en 1 el número de la factura, para no hacer esto de manera manual. El campo en la tabla no lo puse de tipo autoincrementable, por qué para este caso no sería adecuado.
Muchas gracias, como siempre espero que me puedan ayudar. Si existe algún código de ejemplo lo agradecería.

marcoszorrilla 03-12-2007 15:38:15

Puedes ir a la última factura y sumarle uno:
Código Delphi [-]
MiNumero:=0;
Facturas.Last;
MiNumero:=Minumero+FacturasNumero.Value +1;

O bien guardar el último número en una tabla auxiliar, que puede llamarse por ejemplo contadores, allí guardaríamos el nº, del último albarán, factura, Cliente, pedido......

Un Saludo.

Chris 03-12-2007 15:39:01

Sólo un pregunta, ¿Por qué crees que un campo autoincremento, no sería adecuado?.

marcoszorrilla 03-12-2007 15:52:00

El motor de ACCESS ante una cancelación responde saltándose el número actual, además yo prefiero la tabla auxiliar, porque a veces el cliente quiere eliminar una factura realizada por ejemplo por error, basta poner el contador en el lugar a propiado y generar otra que cubra el hueco....

Un Saludo.

Lepe 03-12-2007 16:25:12

Cita:

Empezado por D&W (Mensaje 249980)
Sólo un pregunta, ¿Por qué crees que un campo autoincremento, no sería adecuado?.

Legalmente no se permiten huecos/saltos en la numeración de Facturas (Aplicable en España, México y muchos otros).

Saludos

BertHauser 03-12-2007 19:36:54

Sugerencia
 
Hola:
Crea una tabla llamada "secuencias" por ejemplo:
IDSECUENCIA
NOMBRE_CTE
NUMERO_SGTE

En donde IDSECUENCIA es el ID de la tabla, NOMBRE_CTE es el nombre del comprobante -ej.: (PED)ido, (PAG)aré, (FAC)tura, etc- y NUMERO_SGTE es el numero siguiente del comprobante.
Luego haces un query a esa tabla, por ej.:
select max(numero_sgte+1)
from secuencias
where nombre_cte = 'FAC'

Es solo una idea. Deberías tener una tabla de comprobantes también, y aprovecharla para otras cosas.
Repito: solo una idea.

Ernst von BertHäuser


La franja horaria es GMT +2. Ahora son las 16:33:41.

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