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