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
 

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



Preguntas similares