急!“从 varchar 数据类型到 datetime 数据类型的转换产生一个超出范围的值”如何解决?

ZJM811192 2018-03-07 03:38:35
我以SQL2000数据库为数据源,用VFP2008开发了一个“商品进销存运行软件”,在多家单位使用一直非常正常,但最近在一台新装WIN7运行系统的电脑上安装该“商品进销存运行软件”软件,在运行过程中当接触到以varchar 数据类型表示的日期时,却突然出现“连接错误:从 varchar 数据类型到 datetime 数据类型的转换产生一个超出范围的值”,与“连接错误:可能是驱动程序缺乏资源”的出错提示。
该“商品进销存运行软件”在多家单位的多台电脑(XP系统与WIN7系统)安装使用一直很正常,从来没有发生过上述问题。
敬向电脑专家请教,出现这一问题的原因是什么?如何解决?敬请指导,不胜感激!

另:我上面提的运行软件中出现“连接错误:从 varchar 数据类型到 datetime 数据类型的转换产生一个超出范围的值”,与“连接错误:可能是驱动程序缺乏资源”的出错提示,是否与我远程视图中的筛选条件中使用的以下命令有关:
表商品购进.购进日期>{fn now()}-10
上述命令中的购进日期是varchar 字符型数据类型,命令的要求是查看前10天的商品购进数据。
敬请电脑专家分析,是否是该命令设置不当?(不过,该软件在多台电脑运行并没有出现问题)
敬请指导,不胜感激!
...全文
2669 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZJM811192 2018-03-11
  • 打赏
  • 举报
回复
但是我不明白,为什么同样的问题:字段值有空的记录造成远程视图取值筛选时有出错提醒,为什么这台电脑有提醒,而很多电脑却没有提醒。是什么原因?
早起晚睡 2018-03-11
  • 打赏
  • 举报
回复
1、这样的问题肯定是你的数据中有空的字符串或NULL 2、可能你的数据中有空格 3、把这些排除看看是不是都是类似时间格式的,不是的话统一格式。
ZJM811192 2018-03-10
  • 打赏
  • 举报
回复
谢谢xiaocongzhi 的提醒! 我找到了原因,是由于字段值有空的记录,结果造成了远程视图取值筛选时系统提示“从 varchar 数据类型到 datetime 数据类型的转换产生一个超出范围的值”,将空白值删除,就正常了。 再次表示感谢!
吉普赛的歌 版主 2018-03-09
  • 打赏
  • 举报
回复
用 sqlprofiler 捕获这个错误的SQL吧。 https://www.cnblogs.com/yx007/p/7268310.html 另外, VFP 如今还在使用, 赞叹楼主写这个软件的生命力! 不过还是建议楼主: 1. 用 C# 或 java 来改写(如只是桌面软件, 还是 C#更合适), 毕竟这些高级语言更先进, 比如说在错误日志的捕获, 就可以用 log4net 可以记载下来, 这样在复杂多端的客户机上很容易判断问题出在哪里; 2. 数据库升级到 SQL Server2014 (再高Win7就安装不了,不适合大多数用户), 版本高的SQL Server, 功能多, 维护也更方便。
ZJM811192 2018-03-09
  • 打赏
  • 举报
回复
我用的varchar 字符型数据类型表示的日期格式是“2018/03/09”。 我查了电脑“控制面板”中的里的短日期格式是“yyyy/mm/dd”,长日期格式是“yyyy年m月d日”。 电脑设置的日期格式与varchar 字符型数据类型表示的日期格式是一致的,为什么会出现“从varchar 数据类型到 datetime 数据类型的转换产生一个超出范围的值”的出错提示? 如何解决,敬请电脑专家指导。不胜感激!
ZJM811192 2018-03-09
  • 打赏
  • 举报
回复
我用的varchar 字符型数据类型表示的日期格式是“2018/03/09”。
shoppo0505 2018-03-09
  • 打赏
  • 举报
回复
这个基本都是日期格式的问题,windows设置中看看是不是符合你的程序的格式,比如 日月年,或者月日年
zbdzjx 2018-03-09
  • 打赏
  • 举报
回复
1、在数据库中执行"select convert(datetime,表商品购进.购进日期) from 表商品购进",看看报不报错。如果有错误,就是数据库中数据有问题。 2、看一下报错的电脑,右下角日期、时间显示的格式,如果带有上午、下午、AM、PM、年、月、日或其他中文、英文,也有可能会导致出现这样的错误,要改电脑日期、时间显示格式。
吉普赛的歌 版主 2018-03-09
  • 打赏
  • 举报
回复
楼主我听不明白你在说什么, 请再复读一遍
xiaocongzhi 2018-03-09
  • 打赏
  • 举报
回复
看看有没有字段值为空的记录; 查查这台电脑的日期时间格式;
ZJM811192 2018-03-08
  • 打赏
  • 举报
回复
电脑专家: 我仔细检查了发生问题的原因是由于在VFP中建立的远程视图在筛选条件中使用以下命令: 表商品购进.购进日期>{fn now()}-10 上述命令中的购进日期是varchar 字符型数据类型,运行时立即出错。 是不是需要将varchar 字符型数据类型表示的日期转换成日期型?在SQL中,将 varchar 字符型数据类型表示的日期转换成日期型的函数是什么?上面的表达式“表商品购进.购进日期>{fn now()}-10“应如何修改? 敬向电脑专家请教,不胜感激!
智控科技 2018-03-08
  • 打赏
  • 举报
回复
文章真不错,希望作者能多多分享
ZJM811192 2018-03-08
  • 打赏
  • 举报
回复
电脑专家: 我在VFP中建立的远程视图(通过ODBC连接SQL数据库)在筛选条件中使用以下命令: cast(表商品购进.购进日期 as datetime)>{fn now()}-10 结果运行时仍出现“从varchar 数据类型到datetime 数据类型的转换产生一个超出范围的值”的出错提示,不知是何原因? 敬向电脑专家请教如何解决,不胜感激!
zjcxc 元老 2018-03-08
  • 打赏
  • 举报
回复
通常是日志格式的问题,如果能够,最好把 sql server 中的 varchar 日期字段改成 datetime 类型 如果不能,考虑在 VFP 中把 {fn now()}-10 的结果转为字符日期,这个我不会 或者考虑在 SQL Server中建个 VIEW, 把 购进日期 转成 datetime, 使用 CONVERT(datetime, 购进日期), 然后你的 VFP 中引用这个视图,查询转后的字段 如果在 SQL Server 中 CONVERT(datetime 仍然出错,则检查一下里面存储的数据格式,CONVERT 可以指定格式参数的
Neo_whl 2018-03-08
  • 打赏
  • 举报
回复

   字符串日期数值是怎样的?一般如“”2008-02-03“或“”2006/03/02“””这两种可以直接识别,如果不是我估计函数显示转换也不一定型
cast(表商品购进.购进日期 as datetime)
convert(datetime,表商品购进.购进日期)
吉普赛的歌 版主 2018-03-07
  • 打赏
  • 举报
回复
#3 你做了吗?
ZJM811192 2018-03-07
  • 打赏
  • 举报
回复
电脑专家: 我检查了这台电脑通过ODBC连接SQL数据源,在VFP中建立的远程视图在筛选条件中使用以下命令: 表商品购进.购进日期>{fn now()}-10 上述命令中的购进日期是varchar 字符型数据类型,命令的要求是查看前10天的商品购进数据。 运行时立即出现出错提示“从 varchar 数据类型到 datetime 数据类型的转换产生一个超出范围的值”。 敬请电脑专家分析,是否是该命令设置不当?(不过,该软件在多台电脑运行并没有出现这种问题) 敬请指导,不胜感激!
吉普赛的歌 版主 2018-03-07
  • 打赏
  • 举报
回复
引用 1 楼 yenange 的回复:
1. Win7上的日期是否正确? 2. 重启 VFP 试试
2. 重装 VFP
中国风 2018-03-07
  • 打赏
  • 举报
回复
用SQL追踪一下,看一下出错的SQL命令或存储过程 通常字符串 不满足日期格式,通常出来是SQL的语言环境不支持日期格式,在SQL命令前可声明 如SET DATEFORMAT dmy
吉普赛的歌 版主 2018-03-07
  • 打赏
  • 举报
回复
1. Win7上的日期是否正确? 2. 重启 VFP 试试

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧