找回密码
 立即注册

QQ登录

只需一步,快速开始

tianyake

注册会员

23

主题

58

帖子

183

积分

注册会员

积分
183

活字格认证

tianyake
注册会员   /  发表于:2013-11-4 23:19  /   查看:11992  /  回复:18
vb 6.0中spread绑定数据表t,其中有一列a为varchar类型,可null

这一列输入:xyz
select a + 'aaa'  from t

结果:xyzaaa,这是正常的

但是如果这一列输入:2
select a + 'aaa'  from t

结果结然为2,(应该为2aaa)

不知道为什么?

18 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2013-11-5 10:38:00
沙发
回复 1楼tianyake的帖子

能否提供你的测试 Demo,我目前通过附件测试没有重现你的问题:

spreadcom.zip (2.69 MB, 下载次数: 840)
回复 使用道具 举报
tianyake
注册会员   /  发表于:2013-11-5 11:01:00
板凳
回复 2楼iceman的帖子

在数据库里直接修改
update t set a='2'

select a + 'aaa' from t

是正常的,结果为2aaa
回复 使用道具 举报
tianyake
注册会员   /  发表于:2013-11-5 11:26:00
地板
回复 3楼tianyake的帖子

关键代码:

sql = " if ( object_id('tempdb..##tempBillPackEdit') is not null ) drop table ##tempBillPackEdit"
    sql = sql + " create table ##tempBillPackEdit (FID int identity,FEntryID int null,FGroup int,"
    sql = sql + " FCTNS int null,FCTNE int null,FCTNNo varchar(20) null,FCTNQty int null,FPreCTNQty int null,FAuxQty decimal(28,8) null,"
    sql = sql + " FGW decimal(28,8) null,FNW decimal(28,8) null,FCTNSize varchar(50) null,FPalletNo varchar(50),FBatchNo varchar(50)) "

    oCon.Execute (sql)

m_sql = " select FBatchNo as 批号,FCTNNo as 箱号,FCTNQty as 箱数,FPreCTNQty as 每箱数量,FAuxQty as 数量,FGW as 每箱毛重,FNW as 每箱净重,FCTNSize as 包装箱尺寸,FPalletNo as 卡板号 from ##tempBillPackEdit"

Set rd = New Recordset
rd.ActiveConnection = oCon
rd.CursorLocation = adUseClient
rd.Open m_sql, oCon, adOpenKeyset, adLockOptimistic

Set fpSpread1.DataSource = rd


在箱号列输入2后

select FCTNNo+'aaa' from ##tempBillPackEdit

结果为2,(应该为2aaa)
回复 使用道具 举报
tianyake
注册会员   /  发表于:2013-11-5 11:36:00
5#
回复 4楼tianyake的帖子

补充说明:

版本为7.0

另外加了一个合计行的fpspread2

m_sql = " select null as 批号,null as 箱号,sum(FCTNQty) as 箱数,null as 每箱数量,sum(FAuxQty) as 数量,null as 每箱毛重,null as 每箱净重,null as 包装箱尺寸,null as 卡板号 from ##tempBillPackEdit"

Set rd = New Recordset
rd.ActiveConnection = oCon
rd.CursorLocation = adUseClient
rd.Open m_sql, oCon, adOpenKeyset, adLockOptimistic

Set fpSpread2.DataSource = rd

结果这些为null的列,均显示为0,这很奇怪

DAutoCellTypes=true
DAutoSave=true
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-11-5 11:46:00
6#
回复 5楼tianyake的帖子

数据库是 MySQL?2# 中的代码有查看吗,在你那边结果如何?
回复 使用道具 举报
tianyake
注册会员   /  发表于:2013-11-5 11:57:00
7#
回复 6楼iceman的帖子


数据库是MSSQL
由于2#中的另一个控件我这里没有安装,没办法运行

demo
新建文件夹.rar (3.03 KB, 下载次数: 1717)
回复 使用道具 举报
tianyake
注册会员   /  发表于:2013-11-5 14:48:00
8#
回复 7楼tianyake的帖子

iceman,还请帮我看看,谢谢
回复 使用道具 举报
lqs27
论坛元老   /  发表于:2013-11-5 17:54:00
9#
要让表体列,自动识别到 是字符类型或数字类型 才可以.
回复 使用道具 举报
tianyake
注册会员   /  发表于:2013-11-5 18:08:00
10#
已经 DAutoCellTypes=true

你可以下载我的7#楼的附件,数据库是MSSQL试试

这问题很奇怪,我创建的表里,已经指明了是varchar型,当这一列输入数字后,就出现4#的问题

主要是想解决4#楼的问题
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部