| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 648 人关注过本帖
标题:求助各位大佬一个prg
取消只看楼主 加入收藏
dbf永动机
Rank: 2
等 级:论坛游民
威 望:1
帖 子:77
专家分:21
注 册:2022-8-30
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:6 
求助各位大佬一个prg
首先我知道这个prg挺简单的,奈何我不会写啊
现有一个文件夹,里面有20个dbf表,每个表的字段一样,如下:

xuhao(数值型,3位,小数位0) tihao(数值型,6位,小数位0) ans(字符型,40位) fs(数值型,6位,小数位2)
1                         1                        A                 1.00
2                         2                        B                 1.00
3                         3                        B                 2.00
.......................................................................

现在要做的就是写一个循环,把文件件的里dbf处理一下,处理效果如下:
1.删除xuhao列
2.将fs列名改成mf,并将小数位由2增加到3位,原来的内容也跟着增加,比如1.00,变成1.000
3.添加bit字段(数值型,1,0),并将内容全部替换成1
4.添加xxdf字段(数值型,8,3),并将内容全部替换成0.000
5.添加bfdf字段(数值型,8,3),并将内容全部替换成0.000
6.添加sxkf字段(数值型,8,3),并将内容全部替换成0.000
7.添加dkf字段(数值型,8,3),并将内容全部替换成0.000
8.添加emu字段(数值型,1,0),并将内容全部替换成0
9.添加zdf字段(字符型,100)

至此结束,循环处理文件夹中所有dbf文件,文件名保持不变。

搜索更多相关主题的帖子: 添加 字段 全部 数值 内容 
2023-09-12 09:21
dbf永动机
Rank: 2
等 级:论坛游民
威 望:1
帖 子:77
专家分:21
注 册:2022-8-30
收藏
得分:0 
回复 2楼 sdta
肯定有意义啊,只有处理后的表才能用,我这个程序必须要有这些字段才能运行。
2023-09-12 10:49
dbf永动机
Rank: 2
等 级:论坛游民
威 望:1
帖 子:77
专家分:21
注 册:2022-8-30
收藏
得分:0 
回复 4楼 laowan001
道理我都懂啊,关键就是我的水平只会写单句vfp语句,不会写prg
2023-09-12 12:14
dbf永动机
Rank: 2
等 级:论坛游民
威 望:1
帖 子:77
专家分:21
注 册:2022-8-30
收藏
得分:0 

这是我问人工智能的给出的代码,不会没什么反应,请各位指出一下这代码是否正确

LOCAL lcPath, lnHandle, lnCount, lnI

lcPath = "C:\YourFolderPath\"  && 文件夹路径

SET EXCLUSIVE OFF
SET SAFETY OFF
SET DELETED OFF

lnHandle = ADIR(laTables, lcPath + "*.dbf")  && 获取文件夹中的所有表

lnCount = lnHandle[1]

FOR lnI = 1 TO lnCount  && 循环处理每个表
    USE (lcPath + laTables[lnI, 1])  && 打开表

    * 删除 xuhao 列
    DELETE FIELD xuhao

    * 修改 fs 列名为 mf,并增加小数位
    ALTER TABLE ADD COLUMN mf (6, 3)
    UPDATE ALL SET mf = TRANSFORM(fs, "@ ,.000")

    * 添加 bit 字段,并设置为 1
    ALTER TABLE ADD COLUMN bit (1, 0)
    UPDATE ALL SET bit = 1

    * 添加 xxdf,bfdf,sxkf,dkf 字段,并设置为 0.000
    ALTER TABLE ADD COLUMN xxdf (8, 3)
    UPDATE ALL SET xxdf = 0.000
    ALTER TABLE ADD COLUMN bfdf (8, 3)
    UPDATE ALL SET bfdf = 0.000
    ALTER TABLE ADD COLUMN sxkf (8, 3)
    UPDATE ALL SET sxkf = 0.000
    ALTER TABLE ADD COLUMN dkf (8, 3)
    UPDATE ALL SET dkf = 0.000

    * 添加 emu 字段,并设置为 0
    ALTER TABLE ADD COLUMN emu (1, 0)
    UPDATE ALL SET emu = 0

    * 添加 zdf 字段
    IF !USED("zdf")
        CREATE CURSOR zdf (zdf C(100))
        APPEND BLANK
        REPLACE zdf WITH ""
    ENDIF

    USE IN SELECT("all")  && 关闭当前表
ENDFOR

SET EXCLUSIVE ON
SET SAFETY ON
SET DELETED ON

WAIT WINDOW "处理完成!"  && 显示处理完成消息
2023-09-12 14:12
dbf永动机
Rank: 2
等 级:论坛游民
威 望:1
帖 子:77
专家分:21
注 册:2022-8-30
收藏
得分:0 
回复 7楼 easyppt
这是添加好的完整代码,但是没什么反应,请帮我看看哪里有问题


Close Dbf
Adir(myarray,'*.dbf')
For lnX = 1 To Alen(myarray,1)
    lcFileName = Juststem(myarray(lnX,1))
    If !Used(lcFileName)
        Use (lcFileName) In 0 Excl
    Endif
    If !Empty(Field('xuhao',lcFileName))
        Alter Table (lcFileName) Drop Column xuhao
    Endif
    If !Empty(Field('fs',lcFileName))
        Alter Table (lcFileName) Rename Column fs To mf
        Alter Table (lcFileName) Alter mf N(3,0)
    Endif
    If Empty(Field('bit',lcFileName))
        Alter Table (lcFileName) Add Column bit N(1)  && Default 1
        Repl All bit With 1
    Endif
    If Empty(Field('xxdf',lcFileName))
        Alter Table (lcFileName) Add Column xxdf N(8,3)  && Default 1
        Repl All xxdf With 0.000
    Endif
     If Empty(Field('bfdf',lcFileName))
        Alter Table (lcFileName) Add Column bfdf N(8,3)  && Default 1
        Repl All bfdf With 0.000
    Endif
    If Empty(Field('sxkf',lcFileName))
        Alter Table (lcFileName) Add Column sxkf N(8,3)  && Default 1
        Repl All sxkf With 0.000
    Endif
    If Empty(Field('dkf',lcFileName))
        Alter Table (lcFileName) Add Column dkf N(8,3)  && Default 1
        Repl All dkf With 0.000
    Endif
    If Empty(Field('emu',lcFileName))
        Alter Table (lcFileName) Add Column emu N(1,0)  && Default 1
        Repl All emu With 0
    Endif
    If Empty(Field('zdf',lcFileName))
        Alter Table (lcFileName) Add Column zdf C(100)  && Default 1
    Endif
*   添加其他字段的方法一样,自己加吧...
Endfor
2023-09-12 14:26
dbf永动机
Rank: 2
等 级:论坛游民
威 望:1
帖 子:77
专家分:21
注 册:2022-8-30
收藏
得分:0 
回复 7楼 easyppt
我刚又试了一下,文件夹里放了两个表,有一个成功,另一个表的字段都对了,但是替换的1 和0.000什么的都没替换进去
2023-09-12 14:31
dbf永动机
Rank: 2
等 级:论坛游民
威 望:1
帖 子:77
专家分:21
注 册:2022-8-30
收藏
得分:0 
回复 13楼 easyppt
刚才改完已经成功执行了,没什么问题,感谢哈
2023-09-12 15:01
快速回复:求助各位大佬一个prg
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012468 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved