Consecutivo

19/03/2005 - 18:55 por Hiram Sanchez | Informe spam
Buenas Tardes

Como podria hacer para q una factura genere su propio numero de factura?
estoy usando VFP 6

Se que seria como generar un consecutivo pero no se como seria el codigo..
alguna sugerencia?

Gracias por su ayuda..
 

Leer las respuestas

#1 Luis María Guayán
20/03/2005 - 03:14 | Informe spam
Lo mas recomendable para este caso es que tengas una Tabla con el último Id
generado y cada vez que grabes una factura, ejecutes una funcion (o
procedimiento almacenado) que te devuelve el siguiente numero de factura y
actualice la tabla.

En el siguiente ejemplo, la tabla de Ids servirá para llevar los últimos numeros
de Facturas, Remitos y Clientes.

Primero y por unica vez creo la tabla de Ids y su índice:

*-- Creo una tabla de Ids
CREATE TABLE Ids ;
(cTabla C(30) NOT NULL, ;
nId I NOT NULL)
INDEX ON UPPER(cTabla) TAG cTabla

Segundo, inserto las distintas tablas que deseo llevar su consecutivo:

*-- Por cada tabla que requiera
*-- un campo Id añado un registro
INSERT INTO Ids VALUES("Facturas", 0)
INSERT INTO Ids VALUES("Remitos", 0)
INSERT INTO Ids VALUES("Clientes", 0)

Tercero, cada vez que necesito un nuevo valor consecutivo, llamo a la siguiente
función que puede estar en un archivo de procedimientos o como Porcedimiento
Almacenado en una base de datos:

FUNCTION NuevoID(tcAlias)
LOCAL lcAlias, lnId, lnAreaAnt, lcReprAnt
lnId = 0
lnAreaAnt = SELECT()
lcReprAnt = SET('REPROCESS')
SET REPROCESS TO AUTOMATIC
lcAlias = UPPER(ALLTRIM(tcAlias))
IF NOT USED("Ids")
USE Ids IN 0
ENDIF
SELECT Ids
IF SEEK(lcAlias, "Ids", "cTabla")
IF RLOCK()
REPLACE nId WITH nId + 1 IN Ids
lnID = Ids.nId
UNLOCK
ENDIF
ENDIF
SELECT (lnAreaAnt)
SET REPROCESS TO lcReprAnt
RETURN lnID
ENDFUNC

La función la invoco cada vez que necesito un Id consecutivo de la siguiente
manera:

? NuevoId("Facturas")
? NuevoId("Clientes")
? NuevoId("Facturas")
? NuevoId("Facturas")
? NuevoId("Facturas")
? NuevoId("Clientes")
...
...


Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos



"Hiram Sanchez" escribió en el mensaje
news:
Buenas Tardes

Como podria hacer para q una factura genere su propio numero de factura? estoy
usando VFP 6

Se que seria como generar un consecutivo pero no se como seria el codigo..
alguna sugerencia?

Gracias por su ayuda..

Preguntas similares