一个最简单的运用Access97数据库的程序,全部代码就这么几行:Option ExplicitPrivate Sub Command1_Click()
Dim inputtext
inputtext = Text1
Data1.Recordset.FindNext "[字段1] Like '" + inputtext + "'or [字段2] Like '" + inputtext + "'or [字段3] Like '" + inputtext + "'or [字段4] Like '" + inputtext + "'"End SubPrivate Sub Form_Load()
Data1.Connect = ";pwd=xxxx"
Data1.DatabaseName = "d:\data.mdb"
Data1.RecordSource = "Sheet1"
Data1.Refresh
End Sub在VB调试环境下正常运行,但是遍以后执行可执行程序,运行那个Data1.Recordset.FindNext xxxxxx
就出错!错误是内存溢出!难道脱离了VB内存消耗更大?
我的操作系统:Win 2003 软件为:VB6SP5中文版
数据库共十三个字段,文本型  长度250 仅有150条记录。请问各位,这是怎么回事,怎样解决?

解决方案 »

  1.   

    反正Win98下没有问题,但是我不想让我的程序与Win2003不兼容阿!
      

  2.   

    你怎么就知道是Data1.Recordset.FindNext xxxxxx出错,
      

  3.   

    因为去掉那句就没问题。
    现在又有了新的情况:使用VB的可视化数据管理器,发现它也会出错,但是而且只有查询字段一,选择like ,然后再选择“下一个”,就会内存溢出,Like"第一个"就不会出错,别的字段也没问题,更奇怪的是我试着删除了表的第一条记录,就没问题了,天哪!难道第一条记录中隐含着什么奇怪的东西!
    我的数据库是从Access2002转成Access97的,而Access2002的数据来自Excel,难道这中间出了问题?
      

  4.   

    不,我重新还原了数据库,仔细调试发现在可视化数据管理器中查询字段一是选择Like运算并不总是“下一个”出错,而是没有准!有时是“下一个”,有时是“第一个”,但这四个中肯定有一个没问题。
    我不相信世间有鬼,但今天的确遇到了!
      

  5.   

    我测试了一宿,终于发现了点蛛丝马迹:
    这个问题是我在编写一个日文的数据库时遇到的,最终测试发现只要具备以下条件:
    1.一个字段包含日语片假名的浊音、半浊音字母(注意:GBK编码,可以用微软拼音输入法等中文输入法从软键盘——日文片假名输入,其实它们是中文字符集的一些符号)
    2.试图在Windows Server 2003中以编译的形式运行
    3.试图执行Data1.Recordset.FindNext xxxxxx之类的查询语句
    4.查询动作所指明的字段需要跨越含有上述那些字母的记录
    就会发生“内存溢出”的错误。我对这个问题很不理解,也不知道在WinNT/2000/XP中以及其他一些可以用软件盘输入的什么特殊符号是否存在类似问题,还请数据库专家们不吝赐教!此帖保留一段日期,UP有分!
      

  6.   

    类似问题遇到过一次,未知是何原因,只能提供一些说明:
    不要同时查询不同的数据类型,特别是备注;
    Dim inputtext最好指明数据类型;
    输入时判断数据类型是否相符再inputtext = Text1,-----它有可能是随意敲入了什么其它符号如ctrl(控制符),结果导致查找掩码或控制码之类,就会出现“你无权-----”或内存溢出。
      

  7.   

    只有win2003有问题吗?
    会不会是内码的使用方法不一样?
    把所有的FindNext改成SELECT FROM WHERE 看一看呢?
      

  8.   

    我现在的电脑上只有Win2003和Win98,昨天为了测试又新装了一个干净的Win2003,目前只在Win2003下存在这个问题。"把所有的FindNext改成SELECT FROM WHERE",我刚开始自学VB数据库,查询只知道.Recordset.FindXXXX,不知道这个SELECT FROM WHERE 怎么用,我去查查资料...
      

  9.   

    使用ADO代码编写数据库程序,
    别用控件。
    你可以利用向导生成个使用ADO代码的数据窗体,参考一下。
      

  10.   

    但是,我想VB的可视化数据管理器应当是用ADO代码编写的,但是它同样会出错。
      

  11.   

    主要是CHAR型字段与某些双字节字符串冲突,我在SQL2000下也遇到过
      

  12.   

    看样子,这不是偶然现象啊,我想这个问题是值得总结的。
    既然不能在数据库中检索一些特殊符号,但有时又有需要,看来只好想办法避开数据库系统这个BUG了。我用替换的方法,很麻烦,数据库运行速度多少也受了影响,不知大家有何高见?