PDA

Ver la Versión Completa : Incrementar en 1 un campo númerico


efelix
03-12-2007, 15:21:52
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:
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
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
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