La rutina X8IsAutoInc.PRG de este artículo hace que esa información sea fácil de consultar.
* * X8IsAutoInc.PRG * * RETURNs a logical value indicating whether the * passed field is an AutoInc field. * * Author: Drew Speedie * * lParameters * tcFieldName (R) FieldName or Alias.FieldName * to be checked to see if it * is an AutoInc field. * tcAlias (O) If tcFieldName is passed as * Alias.FieldName, this parameter * is ignored. * If tcFieldName is passed as * just a FieldName, this parameter * is REQUIRED, specifying the ALIAS() * whose tcFieldName is to be * checked to see if it is an AutoInc * field. * * If tcFieldName is in a REMOTE VIEW, this routine * RETURNS .F. * If tcFieldName is in a LOCAL VIEW, this routine * RETURNS a logical value indicating whether tcFieldName * in its base table is an AutoInc field. * * The Alias specified in tcFieldName/tcAlias must be USED(), * if the Alias is a local view, its base table must * also be USED(). * LPARAMETERS tcFieldName, tcAlias IF VERSION(5) < 800 RETURN .f. ENDIF IF NOT VARTYPE(tcFieldName) = "C" ; OR EMPTY(tcFieldName) ASSERT .f. MESSAGE "tcFieldName is required" RETURN .NULL. ENDIF LOCAL lcAlias, lcFieldName lcFieldName = UPPER(ALLTRIM(tcFieldName)) IF OCCURS(".",lcFieldName) = 1 lcAlias = JUSTSTEM(lcFieldName) lcFieldName = JUSTEXT(lcFieldName) ELSE IF VARTYPE(tcAlias) = "C" AND NOT EMPTY(tcAlias) lcAlias = UPPER(ALLTRIM(tcAlias)) ELSE ASSERT .f. MESSAGE "tcAlias is required when po does not include the Alias" RETURN .NULL. ENDIF ENDIF IF CURSORGETPROP("SourceType",lcAlias) = 2 * * remote view * RETURN .f. ENDIF LOCAL laFields[1], xx, llAutoInc, llView, lnSelect llAutoInc = .f. lnSelect = SELECT(0) SELECT (lcAlias) llView = CURSORGETPROP("SourceType",lcAlias) = 1 IF llView lcAlias = X8BTABLE(lcAlias+"."+lcFieldName,CURSORGETPROP("Database",lcAlias)) SELECT (lcAlias) ENDIF AFIELDS(laFields) xx = ASCAN(laFields,lcFieldName,1,-1,1,15) IF xx > 0 llAutoInc = laFields[xx,17] > 0 ENDIF SELECT (lnSelect) RETURN llAutoInc
VFP Tips & Tricks - Drew Speedie
Perdón, chicos.
ResponderBorrar¿Quién me indica qué es X8BTABLE?
Gracias.