日历

« 2009-01-10  
    123
45678910
11121314151617
18192021222324
25262728293031

RSS订阅

生活就是和一堆陌生人打篮球,有时单兵作战,有时你也需要伙伴,有时凭运气捡个漏,有时靠实力上个篮,打得好继续征战,打得臭就要下场观看,输个次把两次不用害怕,你还会有再上场的一天,赢球也不要骄傲,一不留神就有谢幕的危险,慢慢的我们学会享受过程,不再从输赢中寻找成就感,每场球都会有不一样的比分和表现,但结局无外乎筋疲力尽,一声臭汗~~

Access数据库搜索时“内存溢出”的解决办法

2007-01-06 04:38:40 / 个人分类:风言风语

Access数据库使用like搜索时,如果遇到日文片假名就会出现“内存溢出”的问题,提示“80040e14/内存溢出”。解决办法如下:

一、替换法:把数据存储到数据库前把26个日文片假名替换成其他编码,从数据库读取出来后再反替换回来。函数示例如下:

资料来源:http://bbs.blueidea.com/viewthread.php?tid=1768538

编码方式,用于把表单数据存储到数据库之前:JPcode(iStr,true)
解码方式,用于从数据库读取出来之后的显示:JPcode(iStr,false)

函数:
Function JPcode(byVal iStr,codeType)
 If isNull(iStr) or isEmpty(iStr) or iStr = "" Then
  JPcode = "" : Exit function
 End If
 Dim F,i,E
 E = array("Jn0;","Jn1;","Jn2;","Jn3;","Jn4;","Jn5;","Jn6;",_
         "Jn7;","Jn8;","Jn9;","Jn10;","Jn11;","Jn12;","Jn13;",_
         "Jn14;","Jn15;","Jn16;","Jn17;","Jn18;","Jn19;","Jn20;",_
         "Jn21;","Jn22;","Jn23;","Jn24;","Jn25;")
 F = array(chr(-23116),chr(-23124),chr(-23122),chr(-23120),_
         chr(-23118),chr(-23114),chr(-23112),chr(-23110),_
          chr(-23099),chr(-23097),chr(-23095),chr(-23075),_
         chr(-23079),chr(-23081),chr(-23085),chr(-23087),_
         chr(-23052),chr(-23076),chr(-23078),chr(-23082),_
         chr(-23084),chr(-23088),chr(-23102),chr(-23104),_
         chr(-23106),chr(-23108))
       If codyType Then
  For i=0 to 25 iStr = Replace(iStr,F(i),E(i)) Next
       Else
  For i=0 to 25 iStr = Replace(iStr,E(i),F(i)) Next
       End If
       JPcode = iStr
End Function

注意:使用关键字进行搜索时,也要使用JPcode(iStr,true)进行编码后再放入like语句里使用
例如:where [Topic] like '%" & JPcode(keyword) & "%'
才能保证搜索的值和编码过的数据库字段内容匹配。

二、不要使用like语句,例:
把会报错的SQL:where title like '%keyword%'
换成:where InStr(1,LCase(Title),LCase('keyword'),0)<>0


TAG: Access 数据库 内存溢出 日文片假名 学无止境

我来说两句

-5 -3 -1 - +1 +3 +5

Open Toolbar