Foxtable(狐表)用户栏目专家坐堂 → [求助] 数据类型转换错误怎么解决?


  共有3052人关注过本帖树形打印复制链接

主题:[求助] 数据类型转换错误怎么解决?

帅哥哟,离线,有人找我吗?
wssylxb
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:296 积分:2621 威望:0 精华:0 注册:2013/7/18 21:18:00
[求助] 数据类型转换错误怎么解决?  发帖心情 Post By:2020/12/21 13:18:00 [只看该作者]

      项目有个sql server2008 外部数据源的查询表”采购记录”,编写SQL语句后预览查询表,字段及顺序与云服务器的sql 2000中的目标表一样。
      在执行如下语句上报数据时出错:
DataTables("采购记录").Load '加载新的查询表
'开始快速导入
Dim tran As System.Data.SqlClient.SqlTransaction
try
    Dim conn As new System.Data.SqlClient.SqlConnection("server=连接字符串省略”) '改为自己数据库的连接字符串
    conn.Open() '打开链接
    tran = conn.BeginTransaction()
    Dim copy As new System.Data.SqlClient.SqlBulkCopy(conn, System.Data.SqlClient.SqlBulkCopyOptions.Default, tran)
    For Each dc As DataCol In DataTables("采购记录").datacols
        Dim mapping1 As new System.Data.SqlClient.SqlBulkCopyColumnMapping(dc.name, dc.name)
        Copy.ColumnMappings.Add(mapping1)
    Next
    
    copy.DestinationTableName=tb1name  '指定服务器上目标表的名称
    
    copy.BatchSize = 1000
    copy.WriteToServer(DataTables("采购记录").basetable)
    tran.Commit()    '提交事务
    Forms("采购发送").Open()
  catch ex As exception
    msgbox(ex.message)
    tran.Rollback()    '返回False 执行失败!
End try

出错信息是:The given value of type string from  the deta source cannot be converted
to type  nvarchar of the  specified target column.

这个项目文件在多台电脑抓取多个数据库记录上传都没有问题,这个电脑安装运行时出现了问题,另外因为是2008数据库 运行了sqlncli_x64程序,但设置数据源的时候,发现还是没有SQL SERVER Native Client 10.0 这个驱动,但项目可以连上mssql2008数据库。
不知问题出在哪里?如何解决。多谢指导!

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110253 积分:561089 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/21 13:36:00 [只看该作者]

"采购记录"表的列和数据库里的表列肯定有不一致的类型。

设置数据源的时候,没有SQL SERVER Native Client 10.0 这个驱动是因为foxtable只能识别32位的程序,需要安装sqlncli_x86,不如如果可以连接,应该不用管这个的

 回到顶部
帅哥哟,离线,有人找我吗?
wssylxb
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:296 积分:2621 威望:0 精华:0 注册:2013/7/18 21:18:00
  发帖心情 Post By:2020/12/21 19:22:00 [只看该作者]

错误提示的意思是string类型的给定值不能转换为指定目录列的nvarchar 类型,奇怪!string类型不就是sql server中的nvarchar类型吗?怎么会不能转换呢。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110253 积分:561089 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/21 20:18:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
wssylxb
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:296 积分:2621 威望:0 精华:0 注册:2013/7/18 21:18:00
  发帖心情 Post By:2020/12/22 21:11:00 [只看该作者]

经过测试,目标数据表中的字段宽度小于填充的数据宽度,就会出现上面的错误提示,出现这个错误肯定是目标数据列的设定宽度小于原数据列宽造成的,而且一定是nvarchar类型的列问题,把目标表中nvarchar类型的列都改成255。数据正常填充了。现在的问题是为什么出现这个错误呢?在狐表中的查询表执行的sql语句,预览没有发现哪个列超宽,目标的表中,查看也没有列超过原来设定的宽带。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110253 积分:561089 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/22 21:13:00 [只看该作者]

数据里有看不见的空格

 回到顶部