回 帖 发 新 帖 刷新版面

主题:请教:已知字段名,怎样知道它是表中的第几个字段?

用FIELD()函数可以得到表中第N 个字段的字段名。
是否有这样的函数反过来,已知字段名求它是第N个字段?

谢谢!

回复列表 (共7个回复)

沙发

可以的!

板凳

fName = UPPER(allt(INPUTBOX("输入你要找的字段名")))
USE 表文件
*-看看有几个字段
n = 0
DO WHILE .t. 
    n = n+1
    IF TYPE(FIELD(n))="U"
        EXIT
    ENDIF 
ENDDO
*-看看你要找的是第几个
FOR n = 1 TO n
    IF FIELD(n) = fName &&如果你要找name
        MESSAGEBOX(fname +"是第"+ALLTRIM(STR(n))+'个字段')
        RETURN
    ENDIF
ENDFOR 
MESSAGEBOX("没有找到")    

3 楼

自定义函数,代码如下:
FUNCTION FIELDN
PARAMETERS cFIELD
FOR I=1 TO FCOUNT()
  IF FIELD(I)=cFIELD
    RETURN I
  ENDIF 
NEXT
RETURN 0

?FIELDN("字段名")

4 楼

原来就有测试表有几个字段的函数啊
FCOUNT()
呵呵,学习了,
fName = UPPER(ALLTRIM(INPUTBOX("输入你要找的字段名")))
USE book
FOR n = 1 TO FCOUNT()
    IF ALLTRIM(FIELD(n)) == fName &&如果你要找name
        MESSAGEBOX(fname +"是第"+ALLTRIM(STR(n))+'个字段')
        RETURN
    ENDIF
ENDFOR 
MESSAGEBOX("没有找到!")

5 楼

谢谢楼上二位!
看来VF没有现成函数,只能做个自定义函数了。

6 楼

假设表在当前工作区已经打开,假设已知有个字段的名字是“fld”,要知道它是第几个字段,则:

nFlds=AFIELDS(aFlds)
?ASCAN(aFlds,"fld",1,nFlds,1,8)

7 楼

Ilikefox灵活应用函数,代码更精练,令人佩服!

我来回复

您尚未登录,请登录后再回复。点此登录或注册