如何在应用程序中修改FOXPRO数据表
修改FOXPRO的数据表结构,常用的是修改结构命令。这种方法虽然方便,但必须在人机对话中实现。如果你的程序已经交付给很多用户,要求用户使用修改结构命令修改数据表结构,必然会带来很多麻烦。是否可以通过执行预编程的程序来扩展字段宽度?笔者最近做了一个尝试,其程序思路是:
1.使用AFIELDS()函数获取要修改的数据表的结构信息,并将信息存储在STR_FIL数组中。AFIELDS()函数的语法:AFIELDS(ArrayName),ArrayName是放置表结构信息的数组名(本例中命名为STR_FIL)。该数组为每个字段创建一行数据,每列中存储的信息如下:
号字段信息数据类型
1字段名称字符类型
2字段类型字符类型
3字段宽度值类型
4小数点位置值类型
5允许/[k0/]值逻辑类型
6字段有效性标准字符类型[/br
2。根据需要修改STR_FIL数组内容(在本例中,修改字段宽度)。
3.使用CREATE CURSOR命令根据STR_FIL数组的内容创建一个临时表结构。
4.将原始表数据添加到临时表中。
5.使用“复制到”命令用原始表覆盖临时表。
下面是修改字段宽度的原始代码:
*参数:SOU_FILE(修改的数据表文件名),字符类型
*参数:FIE_NAME(要修改的字段名称),字符类型
*参数:FIE_(修改的字段宽度),数值类型
parasou _ file,fie FIEL_SUM,N,Str _ tmp
如果使用(" &sou _ file")
&&打开要修改的数据表
SELE & SOU _ FILE
else
SELE
&&获取表格结构并存入STR_FIL数组
FIEL_SUM=FCOUNT() &&计算表格字段个数
N = 1
DO WHILE N $ # @ 60;=FIEL_SUM
&&查找要修改的字段名称
if all (str _ fil (n,1))= FIE _ name
& &如果是要修改的字段名称
IF STR_FIL(N,3)=FIE_WID
&&确定字段宽度是否相同
RETURN
& & Same RETURN
ELSE
& &否则修改表结构
3)=FIE_WID
&&确定字段长度
退出&&退出循环
如果N= FIEL_SUM &&如果循环结束
等待未修改的字段,按任意键返回……
“wind”
*根据STR_FIL数组的内容创建临时表结构
SELE 0
*创建临时表str _ tmp
根据STR_FIL数组中指定的字段名
类型和宽度从str _ fil数组创建游标str _ tmp
*将原始数据表添加到临时表STR _ TMP
sele 0
appe from & sou _ file
copy to & sou _ file & & copy新的原始数据表
RETURN
0条评论