标题:从SQL2000数据到VFP9的问题?
只看楼主
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
结帖率:98.96%
已结贴  问题点数:10 回复次数:9 
从SQL2000数据到VFP9的问题?
我SQL2000的字符字段是 Varchar(16),但不是个个都16位的。在SQL2000上,确实是实际多长,就是多长。
我曾经在SQL2000中读长度,确实是对的,但下载到VF9后,就个个都是长度16位了。。
sql_str="select len(bh) as bh_len,bh,xm from abc"
sqlexec(nhandle,sql_str,"abc1")
取回来的数据,在字段BH_LEN中,确实是实际的长度,但在VFP中,BH的字段,都是长度16的?
SELECT ABC1
?LEN(BH)
===16
如:
BH_LEN          BH                 XM     
5               12345              12345
?LEN(BH)=16的。。
为什么?怎么解决这个问题?
难道取回来后,字符字段的,个个都要RTRIM()后才使用?
2015-07-20 13:49
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:4 
VARTYPE(BH)是“C”了
2015-07-20 13:56
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
好像是C,要晚上才知道。SQL2000上是VARCHAR(16)
读到VFP9上是固定长度16,
2015-07-20 16:13
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
2015-07-20 16:36
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
sql_str="create table test(bh varchar(16),xm varchar(20))"
?SQLEXEC(nhandle,sql_str)
FOR i=1000 TO 1050
str_bh='A'+ALLTRIM(STR(i))
str_xm='B'+ALLTRIM(STR(I))
ins=SQLEXEC(nhandle,'insert into test(bh,xm) values(?str_bh,?str_xm)')
endfor
res=SQLEXEC(nhandle,'select LEN(bh) as bh_len,bh,xm from test','test')
brow
2015-07-20 16:36
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
看到了没,我刚才在上班的电脑测试的。
2015-07-20 16:37
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
UP....
2015-07-21 11:28
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
得分:6 
因为vfp9虽然增加了V型字段,但从其它地方导入的规则却没重新写过,所以都是旧式的C型。我是这么做的,只要两步:1、把字段类型改为V型;2、用REPLACE ALL 字段名 WITH ALLTRIM(字段名)的命令去掉所有记录后面的多余空格。如果有多个字段,且你经常要从外部数据库导入数据的话,可以自己动手编一段通用代码。
2015-07-21 22:42
liujc73
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2012-6-26
得分:0 
?LEN(ALLT(BH))试试吧
2015-07-30 13:17
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
LEN(ALLT(BH)),肯定是实际长度,我是说SQL2000上的长度是实际长度,但下到VFP表上,就都变为最大长度了。不知道,有没办法,下载到VFP去,也是实际长度,这样在使用的时候,就不需要处理了。
要不,都要处理,才能使用。
2015-07-30 13:30



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




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

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