Microsoft JET Database Engine 错误 '80040e14'

Microsoft JET Database Engine 错误 '80040e14'

2009/4/27 8:31:00来源:本站整理作者:我要评论(0)

Microsoft JET Database Engine 错误 '80040e14'

本来的代码是:

sql_news="select * from news where new_title like '%"&search&"%' "
sql_road="select * from road where road_name like '%"&search&"%'"
sql_Features="select * from Features where mingcheng like '%"&search&"%' "

修改后的代码是:

sql_news="select * from news where InStr(1,LCase(new_title),LCase('"&search&"'),0)<>0 "
sql_road="select * from road where InStr(1,LCase(road_name),LCase('"&search&"'),0)<>0 "
sql_Features="select * from Features where InStr(1,LCase(mingcheng),LCase('"&search&"'),0)<>0 "

修改后测试问题解决。

下面是解决过程中参考的资料:

==26个日文片假名导致Access搜索(80040e14/内存溢出)的解决办法==

ゴ ガ ギ グ ゲ ザ ジ ズ ヅ デ ド ポ ベ プ ビ パ ヴ ボ ペ ブ ピ バ ヂ ダ ゾ ゼ

当字段内包含了这26个日文字符任意一个多个时,就会导致在执行SQL语句中包含了

[字段] like '%aaaaa%' 或 inStr(1,[字段],'aaaaa',1)>0

这样的查询时,毫无道理的出现了

"Microsoft JET Database Engine 错误 '80040e14' 内存溢出"的错误

其他Jet SQL函数命令未作测试,大概与字符搜索定位匹配相关的都可能出错

搜索相关资料得知被微软工程师证实是Access的bug,可能是语法关系都是微软的东东

在vbs中 执行inStr(1,日文平假名变量,"aaaaa",1)依然要出现错误

Microsoft VBScript 运行时错误 错误 '800a0005' 无效的过程调用或参数: 'instr'

没有搜索,因这几个字符出现Access的论坛网站搜索无法进行,何等痛苦

昨天一朋友大叫怪事,他的音乐数据库无法搜索了,只有30000条记录时是好的

毫无疑问,日文片假名是祸根,花几分钟把有包含上面的日文替换成"?"搜索顺利恢复

找来论坛程序用户群最大的动网dvBBS AC版本 7.0SP2 版测试,同样有这个日文发帖后 导致无法搜索并且运行时出错的问题

线上去搜索 '80040e14' 内存溢出" 的错误 多的是!

一个简单的方法是:

把如下的语句:

Sql = "select * From [tbname] Where Title like '%"&keyword&"%' Order By id Desc"

换成:

Sql = "select * from [tbname] where InStr(1,LCase(Title),LCase('"&keyword&"'),0)<>0 order by id desc"

 

附:

Active Server Pages, ASP 0126 (0x80004005) --> 找不到包含文件

Microsoft OLE DB Provider for ODBC Drivers (0x80040E21) --> sql语句出错(数据类型不匹配或表名(字段名)错误或表处于编辑状态,或表不存在于conn打开的数据库中)

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) --> sql语句出错(字段名错
误,或数据类型不匹配)

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07) --> sql语句出错(要插入或更新的字段的类型与变量数据类型不匹配)

Microsoft OLE DB Provider for ODBC Drivers (0x80040E57) --> sql语句出错(要插入或更新的数据溢出)

Microsoft OLE DB Provider for ODBC Drivers (0x80040E10) --> sql语句出错(update字段名或要更新的数据类型错误)

Microsoft OLE DB Provider for ODBC Drivers (0x80004005) --> sql语句出错(要插入或更新的字段的数值不能为空值)

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)  --> 打开数据库出错,没有在指定目录发现数据库

Microsoft OLE DB Provider for ODBC Drivers (0x80040E37) --> 没有发现表

Microsoft VBScript 运行时错误 (0x800A000D) --> 错误引用rs变量(rs对像已关闭或未定义)

Microsoft VBScript 运行时错误 (0x800A01C2) --> vbscript脚本错误(vbscript语句出错)

Microsoft VBScript 运行时错误 (0x800A0006) --> vbscript脚本错误(溢出错误)

Microsoft VBScript 编译器错误 (0x800A040E) --> 缺少loop

Microsoft VBScript 编译器错误 (0x800A03EA) --> 缺少if或end if

Microsoft VBScript 编译器错误 (0x800A03EE) --> 语句未结束(缺少")")

Microsoft VBScript 编译器错误 (0x800A03F6) --> if语句出错(缺少end if)

Microsoft VBScript 运行时错误 (0x800A005B) --> 缺少set

Microsoft VBScript 运行时错误 (0x800A0005) --> 变量未定义

Microsoft VBScript 编译器错误 (0x800A03F9) --> if语句缺少then

Microsoft VBScript 编译器错误 (0x800A0411) --> dim语句定义错误

Microsoft VBScript 编译器错误 (0x800A0408) --> sql语句错误(?????????????????)

ADODB.Recordset (0x800A0BB9) --> sql语句出错(sql语句或conn语句未定义或对一个rs属性进行赋值时发生错误)

ADODB.Recordset (0x800A0CC1) --> rs对像出错(rs对像本身不存在或错误地引用了一个不
存在的字段名)

ADODB.Recordset (0x800A0BCD) --> rs对像出错(记录集中没有记录却对记录集进行操作)

ADODB.Recordset (0x800A0E78) --> rs对像出错(记录集不存在,缺少rs.open语句)

ADODB.Recordset (0x800A0CC1) --> rs对像出错(引用了一个不存在的字段名)

ADODB.Recordset (0x800A0E7D) --> conn定义错误

ADODB.Recordset (0x800A0CB3) --> 数据库以只读方式打开,无法更新数据。

 

阅读本文后您有什么感想? 已有 人给出评价!

  • 0 囧
      囧
  • 0 恶心
      恶心
  • 0 期待
      期待
  • 0
      难过
  • 0 不错
      不错
  • 0 关注
      关注
  • 最新评论
  • 热门评论
共有评论(0)条 查看全部评论
高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲

注:您的评论需要经过审核才会显示出来