A partir de VFP9 se cuenta con una función nativa que hace muy fácil su uso: GetAutoIncValue() .
lnLastID = GetAutoIncValue()
IF LastID > 0
*** Utilizar este valor
ENDIF
Esta función tiene un punto débil, ya que sólo te dará los valores de el último autoincremental, cosa que podría ser contraproducente (o inútil) si utilizas varios autoincrementales en una misma tabla (cosa que es posible), para esto, y también para ayudar a aquellos que cuenta todavía con la versión 8, pongo a disposición una rutina que podría ser utilizada para subsanar este pequeño problema:**************************************************************************
* Function: LastID
* Obtener el último ID (Autoincremental) de un cursor, según el campo indicado
* Parameters: tcAlias ---> Alias del cursor
* tcField ---> Campo Autoincremental
* Returns:
* + Entero positivo mayor o igual a cero si se le ha proporcionado
* correctamente el alias y campo (debe ser autoincremental).
* + .NULL. en caso de haber error, o no cumplir con los
* requerimentos
* Developer: Esparta Palma (esparta@gmail.com) http://www.PortalFox.com
**************************************************************************
FUNCTION LastID(tcAlias AS String,;
tcField AS String ) AS Integer
LOCAL luReturn
luReturn = .NULL.
*** Revisar si existe el alias
IF (SELECT(tcAlias)>0) AND (AFIELDS(LaFields,tcAlias) > 0)
LOCAL lnRow
*** Buscar la columna del campo a obtener su ultimo ID
lnRow = ASCAN(laFields,tcField,1,0,1,1+8)
*** Si el campo existe y es del tipo AutoInc
IF (lnRow > 0) AND (laFields[lnRow,18] > 0)
luReturn = laFields[lnRow,17]-1
ENDIF
ENDIF
RETURN luReturn
ENDFUNC
Su modo de uso es el siguiente:
lnLastID = LastID("TuTabla","TuCampoIncremental")
IF NOT NULL(lnLastID)
*** Utilizar este valor
ENDIF
Espero les sea de utilidad.
Espartaco Palma Martínez
No hay comentarios. :
Publicar un comentario
Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.