注册 登录
编程论坛 VFP论坛

判断表中是否存在字段名,这个命令好像还有点问题。请指教。

分号 发布于 2021-06-02 12:55, 2575 次点击
程序代码:

If Empty(Field('bm'))

    Messagebox("不存在")
ALTER table 理科 ADD bm c(8)
Else

    Messagebox("存在")

 ALTER table 理科 drop bm
EndIf
13 回复
#2
sdta2021-06-02 13:17
IF TYPE("语文1") == "U"
    ? "字段不存在"
ENDIF
#3
分号2021-06-02 16:05
是想  如果 不存在 ,就建立字段, 如果 存在  就 删除字段 后再建立。
#4
分号2021-06-02 16:07
程序代码:
If Empty(Field('bm'))
    Messagebox("不存在")
ALTER table 理科 ADD bm c(8)
Else
    Messagebox("存在")

 ALTER table 理科 drop bm
ALTER table 理科 ADD bm c(8)
EndIf
#5
sdta2021-06-02 16:16
以下是引用分号在2021-6-2 16:05:16的发言:

是想  如果 不存在 ,就建立字段, 如果 存在  就 删除字段 后再建立。

程序代码:
IF TYPE("语文1") == "U" &&  不存在
    *根据需要写代码
ELSE                    &&存在
    *根据需要写代码
ENDIF
#6
wengjl2021-06-02 16:51
我的土八路办法是:
use 表
zdm='|'
FOR i=1 TO FCOUNT()     &&& 按字段数循环
    zdm=zdm+FIELD(i)+'|'    &&& 将字段名存入变量ZDM中
ENDFOR
IF '要判断的字段名'$zdm
   ? '存在'   
ELSE
   ? '不存在'   
ENDIF
#7
吹水佬2021-06-02 17:06
以下是引用分号在2021-6-2 12:55:27的发言:


If Empty(Field('bm'))

    Messagebox("不存在")
ALTER table 理科 ADD bm c(8)
Else

    Messagebox("存在")
 ALTER table 理科 drop bm
EndIf

用FIELD()无问题,应该不是字段名的问题。
有什么异常提示信息?
#8
sdta2021-06-02 17:09
以下是引用wengjl在2021-6-2 16:51:43的发言:

我的土八路办法是:
use 表
zdm='|'
FOR i=1 TO FCOUNT()     &&& 按字段数循环
    zdm=zdm+FIELD(i)+'|'    &&& 将字段名存入变量ZDM中
ENDFOR
IF '要判断的字段名'$zdm
   ? '存在'   
ELSE
   ? '不存在'   
ENDIF

解决问题的方法就是好方法
#9
分号2021-06-02 18:21
回复 5楼 sdta
只有本站会员才能查看附件,请 登录
还是一样。数据表里面有这个字段。还是提示这样。
#10
分号2021-06-02 18:23
回复 8楼 sdta
程序代码:

IF TYPE("bm") == "U" &&  存在
     ALTER table 文科 drop bm
ALTER table 文科 ADD bm c(8)


   
ELSE                    &&不存在

 ALTER table 文科 ADD bm c(8)

ENDIF



这样可以
#11
sdta2021-06-02 18:58
我前面的代码有问题,字段名前要加表别名。向楼主表示歉意!
CLEAR
CREATE CURSOR test (a1 c(10), a2 c(10))
IF TYPE("test.a3") == "U"
    ? "不存在"
    ALTER TABLE test ADD a3 c(20)
ELSE
    ? "存在"
    ALTER TABLE test drop a1
    ALTER TABLE test ADD a1 c(20)
ENDIF
BROWSE
#12
吹水佬2021-06-02 20:48
以下是引用分号在2021-6-2 18:23:21的发言:

ALTER table 文科 drop bm
ALTER table 文科 ADD bm c(8)

修改表结构要重写表文件,删除又添加等于重写表文件两次
同名字段不用先删除后添加,直接修改字段的类型和长度就可以
#13
liuxingang282021-06-03 11:52
使用 FIELD()或 TYPE()前,应该先打开数据表。请看以下示例:

use 文科
if empty(field("bm"))
  alter table 文科 add bm c(8)
else
    ....
#14
厨师王德榜2021-06-04 12:36
用fsize()来判断字段是否存在.
if fsize('学号','表别名')>0
    ? '字段:学号 存在'
else
    ? '字段:学号 不存在'
endif

另外,使用type()前,要先 select 工作区,这是很多人会忽略的地方.
1