标题:找出某表中所有字符型字段
只看楼主
杂七杂八
Rank: 1
等 级:新手上路
帖 子:217
专家分:7
注 册:2018-2-20
得分:0 
回复 10楼 吹水佬
Aaa.dbf数据源是从系统中导出excel后转dbf,aaa表中许多看不见的空格符,所以要对字符型字段的值进行整理。
不好意思,老是给你添麻烦
2022-07-14 09:55
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 11楼 杂七杂八
3楼的测试代码已经说明问题了
2022-07-14 10:03
杂七杂八
Rank: 1
等 级:新手上路
帖 子:217
专家分:7
注 册:2018-2-20
得分:0 
回复 12楼 吹水佬
多个字符型字段,都要一个个去写明,有点冗长
2022-07-14 10:13
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用杂七杂八在2022-7-14 10:13:52的发言:

多个字符型字段,都要一个个去写明,有点冗长

这做法,一个字段与多个字段有什么不同? 结果都是一样:多此一举,徒劳
2022-07-14 10:39
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:20 
以下是引用杂七杂八在2022-7-14 09:31:03的发言:

Use aaa
Nrow=afield(amy,1)
   For I =1 to nrow
      If type(字段)=“C”
           Repl all 字段 with trim(字段)
       End if
    Endfor
Close all
想要这样的命令

VFP的C类型的,就算你写数据是,把空格去掉了,但他还是会补空格填满的,你读数据的时候,还是要处理空格
如你C类型,姓名 C(10),你写数据的时候,写了“张三”进去,长度是4,但你用 Len(姓名)是等于10的,你substr(姓名,1,4) 是张三,但substr(姓名,5)后,是空的
就你上面的语句,可以改为

Nrow=afield(ary,1)
   For I =1 to nrow
      If ary[i,2]="C"
         Repl all &ary[i,1] with TRIM(&ary[i,1])
       Endif
    Endfor
Close all
2022-07-14 11:16
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
上面的语句,是把空格去掉了,但存在DBF中的C字段,还是会补空格进去,还是 姓名 C(10),的长度10,
你改字段为 V字段,可变长字段,你存进去长度多少,读出来的就是多少,不会补空格。
对比C和V
CREATE CURSOR t0(序号 i,姓名 C(10))
INSERT INTO T0(序号,姓名) VALUES(1,'A1')
INSERT INTO T0(序号,姓名) VALUES(2,'AA1')
INSERT INTO T0(序号,姓名) VALUES(3,'AAA1')
SCAN
 ?LEN(姓名)
ENDSCAN
结果是
10
10
10
但V字段
CREATE CURSOR t1(序号 i,姓名 V(10))
INSERT INTO T1(序号,姓名) VALUES(1,'A1')
INSERT INTO T1(序号,姓名) VALUES(2,'AA1')
INSERT INTO T1(序号,姓名) VALUES(3,'AAA1')
SCAN
 ?LEN(姓名)
ENDSCAN
结果是
2
3
4
2022-07-14 11:25
杂七杂八
Rank: 1
等 级:新手上路
帖 子:217
专家分:7
注 册:2018-2-20
得分:0 
回复 15楼 mywisdom88
能够找出aaa 表中的历遍所有字符型字段名,并作整理。谢谢你!非常感谢🙏
2022-07-14 11:55
杂七杂八
Rank: 1
等 级:新手上路
帖 子:217
专家分:7
注 册:2018-2-20
得分:0 
回复 16楼 mywisdom88
学习了,涨知识
2022-07-14 11:59
厨师王德榜
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:183
帖 子:942
专家分:4724
注 册:2013-2-16
得分:0 
对C型字段,这种操作无意义,
对V型字段,这种操作有意义,
但是,V型字段,要VFP9.0才支持.
我的大致思路是,先用Afields()取所有字段信息到数组,
然后遍历数组,当字段类型="V"时, 拼凑一个Replace 语句并执行,直到遍历结束.

[此贴子已经被作者于2022-7-14 16:33编辑过]

2022-07-14 16:30



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-509562-1-1.html




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

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