Autonumber

12/07/2004 - 04:59 por German Saer | Informe spam
Hello Foxeros!!

El procedimiento almacenado que muestro a continuacion es el codigo de un
TRIGGER que se ejecuta cuando se inserta un nuevo registro en la tabla
"Products". La instruccion "REPLACE Products.ProductID WITH
Autonumbers.Number" me da un error: el registro no se puede actualizar. y
el desencadenante falla. por que? como podria hacer esto de otra manera,
pero siempre manteniendolo en un trigger on insert (ya que me garantiza que
ningun registro se incluira sin su correspondiente numero secuencial.)

PROCEDURE InsertProduct
LOCAL lResult
USE Autonumbers IN 0 ALIAS Autonumbers ORDER Table
IF !SEEK("Product", "Autonumbers")
lResult= .F.
ELSE
IF RLOCK("Autonumbers")
REPLACE Autonumbers.number WITH Autonumbers.number + 1
REPLACE Products.ProductID WITH Autonumbers.Number
lResult= .T.
UNLOCK IN Autonumbers
ENDIF
ENDIF
USE IN Autonumbers
RETURN lResult

Foxpro Version 5.0

German Saer
gsaer@hotmail.com
Orlando, FL 32809

Preguntas similare

Leer las respuestas

#1 José M. Paez
13/07/2004 - 06:27 | Informe spam
Hola German

Te sugiero que mires el ejemplo "TASTRADE" que trae VFP5, si observas las
tablas tienen campo ID que el valor por defecto es una llamada a la funcion
NewID, esta funcion la encontras como Proc. Almac. dentro de la Base de
Datos.
Tal vez esto te ayude a armar tu procedimiento de "AutoNumbers".

Saludos

José Paez
Córdoba - Argentina


"German Saer" escribió en el mensaje
news:D8nIc.34975$
Hello Foxeros!!

El procedimiento almacenado que muestro a continuacion es el codigo de un
TRIGGER que se ejecuta cuando se inserta un nuevo registro en la tabla
"Products". La instruccion "REPLACE Products.ProductID WITH
Autonumbers.Number" me da un error: el registro no se puede actualizar.


y
el desencadenante falla. por que? como podria hacer esto de otra manera,
pero siempre manteniendolo en un trigger on insert (ya que me garantiza


que
ningun registro se incluira sin su correspondiente numero secuencial.)

PROCEDURE InsertProduct
LOCAL lResult
USE Autonumbers IN 0 ALIAS Autonumbers ORDER Table
IF !SEEK("Product", "Autonumbers")
lResult= .F.
ELSE
IF RLOCK("Autonumbers")
REPLACE Autonumbers.number WITH Autonumbers.number + 1
REPLACE Products.ProductID WITH Autonumbers.Number
lResult= .T.
UNLOCK IN Autonumbers
ENDIF
ENDIF
USE IN Autonumbers
RETURN lResult

Foxpro Version 5.0

German Saer

Orlando, FL 32809



Respuesta Responder a este mensaje
#2 Luis María Guayán
15/07/2004 - 02:04 | Informe spam
Mira si este ejemplo te sirve. No recuerdo con que versión de VFP lo he probado,
pero debería funcionar en VFP5

http://www.portalfox.com/article.php?sidR7

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


"José M. Paez" escribió en el mensaje
news:
Hola German

Te sugiero que mires el ejemplo "TASTRADE" que trae VFP5, si observas las
tablas tienen campo ID que el valor por defecto es una llamada a la funcion
NewID, esta funcion la encontras como Proc. Almac. dentro de la Base de
Datos.
Tal vez esto te ayude a armar tu procedimiento de "AutoNumbers".

Saludos

José Paez
Córdoba - Argentina


"German Saer" escribió en el mensaje
news:D8nIc.34975$
> Hello Foxeros!!
>
> El procedimiento almacenado que muestro a continuacion es el codigo de un
> TRIGGER que se ejecuta cuando se inserta un nuevo registro en la tabla
> "Products". La instruccion "REPLACE Products.ProductID WITH
> Autonumbers.Number" me da un error: el registro no se puede actualizar.
y
> el desencadenante falla. por que? como podria hacer esto de otra manera,
> pero siempre manteniendolo en un trigger on insert (ya que me garantiza
que
> ningun registro se incluira sin su correspondiente numero secuencial.)
>
> PROCEDURE InsertProduct
> LOCAL lResult
> USE Autonumbers IN 0 ALIAS Autonumbers ORDER Table
> IF !SEEK("Product", "Autonumbers")
> lResult= .F.
> ELSE
> IF RLOCK("Autonumbers")
> REPLACE Autonumbers.number WITH Autonumbers.number + 1
> REPLACE Products.ProductID WITH Autonumbers.Number
> lResult= .T.
> UNLOCK IN Autonumbers
> ENDIF
> ENDIF
> USE IN Autonumbers
> RETURN lResult
>
> Foxpro Version 5.0
>
> German Saer
>
> Orlando, FL 32809
>
>
>



Respuesta Responder a este mensaje
#3 German Saer
16/07/2004 - 06:53 | Informe spam
Gracias a todos por su ayuda.
Ya lo tengo!


"Luis María Guayán" wrote in message
news:
Mira si este ejemplo te sirve. No recuerdo con que versión de VFP lo he


probado,
pero debería funcionar en VFP5

http://www.portalfox.com/article.php?sidR7

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


"José M. Paez" escribió en el mensaje
news:
> Hola German
>
> Te sugiero que mires el ejemplo "TASTRADE" que trae VFP5, si observas


las
> tablas tienen campo ID que el valor por defecto es una llamada a la


funcion
> NewID, esta funcion la encontras como Proc. Almac. dentro de la Base de
> Datos.
> Tal vez esto te ayude a armar tu procedimiento de "AutoNumbers".
>
> Saludos
>
> José Paez
> Córdoba - Argentina
>
>
> "German Saer" escribió en el mensaje
> news:D8nIc.34975$
> > Hello Foxeros!!
> >
> > El procedimiento almacenado que muestro a continuacion es el codigo de


un
> > TRIGGER que se ejecuta cuando se inserta un nuevo registro en la tabla
> > "Products". La instruccion "REPLACE Products.ProductID WITH
> > Autonumbers.Number" me da un error: el registro no se puede


actualizar.
> y
> > el desencadenante falla. por que? como podria hacer esto de otra


manera,
> > pero siempre manteniendolo en un trigger on insert (ya que me


garantiza
> que
> > ningun registro se incluira sin su correspondiente numero secuencial.)
> >
> > PROCEDURE InsertProduct
> > LOCAL lResult
> > USE Autonumbers IN 0 ALIAS Autonumbers ORDER Table
> > IF !SEEK("Product", "Autonumbers")
> > lResult= .F.
> > ELSE
> > IF RLOCK("Autonumbers")
> > REPLACE Autonumbers.number WITH Autonumbers.number + 1
> > REPLACE Products.ProductID WITH Autonumbers.Number
> > lResult= .T.
> > UNLOCK IN Autonumbers
> > ENDIF
> > ENDIF
> > USE IN Autonumbers
> > RETURN lResult
> >
> > Foxpro Version 5.0
> >
> > German Saer
> >
> > Orlando, FL 32809
> >
> >
> >
>
>
>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida