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..

Preguntas similare

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..

Respuesta Responder a este mensaje
#2 Jesus Botello
23/03/2005 - 21:59 | Informe spam
Slelect Alias
id_clie=id_clie + 1
gather memvar
thisform.refresh

ESO ES TODO

SALUDOS




"Luis María Guayán" escribió en el mensaje
news:
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..





Respuesta Responder a este mensaje
#3 Alex Feldstein
24/03/2005 - 02:12 | Informe spam
On Sat, 19 Mar 2005 13:55:21 -0400, "Hiram Sanchez"
wrote:

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?



ver:
http://www.feldstein.net/newid_sp.asp



Alex Feldstein
________________________________
Microsoft Visual FoxPro MVP
Please respond in the public groups so that everybody
can benefit from the exchange.
Favor de responder en los foros públicos asi todos se benefician.
(address munged with ROT-13)

Blog: http://www.bloglines.com/blog/AlexFeldstein
Website: http://feldstein.net
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida