注册 登录
编程论坛 VFP论坛

如何探测DBF表的某个字段的宽度

wengjl 发布于 2025-12-11 16:25, 334 次点击
如何探测DBF表的某个字段的宽度,请高手赐教,谢谢!

1、提问的起因:公司每月对员工的奖励项目有多有少,所以,每月一个DBF表的字段是有多有少的,现领导要全年的各奖项汇总与统计分析数据,我需要将每月的奖励汇总(用 appe from 追加汇总)到同一个DBF表上,需要创建一个包含所有奖项字段的表,想用代码实现,获取每月DBF表上字段名,我会,获取字段宽度(包括小数位数)我不会。

2、求助:如何用代码获取DBF表的字段宽度值?麻烦的大咖们赐教,谢谢!

8 回复
#2
吹水佬2025-12-11 16:46
有个函数获取结构信息的
#3
foxfans2025-12-11 17:10
CLEAR
nFieldCount = AFIELDS(FieldArray,"tmptable")
?"字段数:",nFieldCount
FOR nIndex=1 TO nFieldCount
    ?FieldArray(nIndex,1),FieldArray(nIndex,2),FieldArray(nIndex,3),FieldArray(nIndex,4)
ENDFOR
#4
chychychy2025-12-11 17:17
留个脚印方便学习
#5
laowan0012025-12-11 20:45
select 要提取结构的表
COPY STRUCTURE EXTENDED TO FileName
FileName这个dbf表中记录了所有字段的:名称、类型、长度、...全部你需要的信息


#6
sych2025-12-11 22:31
返回以字节为单位的指定字段或文件的大小。

 
FSIZE(cFieldName [, nWorkArea | cTableAlias] | cFileName)
 

参数
cFieldName

指定字段名。
nWorkArea

指定表所在的工作区,FSIZE( ) 函数返回该表中某个字段的大小。如果在指定工作区中没有打开的表,FSIZE( ) 函数的返值为 0。
cTableAlias

指定表的别名,FSIZE( ) 函数返回该表中某个字段的大小。如果指定的表别名不存在,Visual FoxPro 将产生错误信息。
cFileName

指定文件名,FSIZE( ) 函数以字节为单位返回其大小。
#7
schtg7 天前 06:53
我常用5楼的方法,可以一试哈
只有本站会员才能查看附件,请 登录

程序代码:
close databases
open database (home(2) + 'data\testdata')
use customer

clear
display structure
copy structure extended to _kk


3楼的方法也很好的
只有本站会员才能查看附件,请 登录

程序代码:
close databases
open database (home(2) + 'data\testdata')
use customer

CLEAR
nFieldCount = AFIELDS(FieldArray,"customer")
?"字段数:",nFieldCount
FOR nIndex=1 TO nFieldCount
    ?FieldArray(nIndex,1),FieldArray(nIndex,2),FieldArray(nIndex,3),FieldArray(nIndex,4)
ENDFOR


[此贴子已经被作者于2025-12-12 07:01编辑过]

#8
wengjl7 天前 08:35
感谢大家的帮助,谢谢!3楼的方法代码是新的收获。再次谢谢大家的助力!
#9
hsfisher7 天前 08:44
学习了
1