以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助] 数据类型转换错误怎么解决? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=159293) |
-- 作者:wssylxb -- 发布时间: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数据库。 不知问题出在哪里?如何解决。多谢指导! |
-- 作者:有点蓝 -- 发布时间:2020/12/21 13:36:00 -- "采购记录"表的列和数据库里的表列肯定有不一致的类型。 设置数据源的时候,没有SQL SERVER Native Client 10.0 这个驱动是因为foxtable只能识别32位的程序,需要安装sqlncli_x86,不如如果可以连接,应该不用管这个的
|
-- 作者:wssylxb -- 发布时间:2020/12/21 19:22:00 -- 错误提示的意思是string类型的给定值不能转换为指定目录列的nvarchar 类型,奇怪!string类型不就是sql server中的nvarchar类型吗?怎么会不能转换呢。 |
-- 作者:有点蓝 -- 发布时间:2020/12/21 20:18:00 -- https://www.baidu.com/baidu?word=The%20given%20value%20of%20type%20string%20from%20%20the%20deta%20source%20cannot%20be%20converted |
-- 作者:wssylxb -- 发布时间:2020/12/22 21:11:00 -- 经过测试,目标数据表中的字段宽度小于填充的数据宽度,就会出现上面的错误提示,出现这个错误肯定是目标数据列的设定宽度小于原数据列宽造成的,而且一定是nvarchar类型的列问题,把目标表中nvarchar类型的列都改成255。数据正常填充了。现在的问题是为什么出现这个错误呢?在狐表中的查询表执行的sql语句,预览没有发现哪个列超宽,目标的表中,查看也没有列超过原来设定的宽带。 |
-- 作者:有点蓝 -- 发布时间:2020/12/22 21:13:00 -- 数据里有看不见的空格 |