软件注册站
热情软件屋

 
绑定控件调用Seek方法没有找到匹配记录时报错
编号: QA002469    
建立日期: 2000年1月20日 最后修改日期: 2000年1月20日
所属类别: Visual Basic - 错误信息
Visual Basic - 数据控件
   
    操作系统:WIN
    编程工具:VB5
    问题:我用VB5.0进行数据库编程中,使用DAO方法结合DATA数据邦定控件对数据库中的记录进行查询,编程如下:
     option explicit     * 在窗体模块中声明两个变量
     dim db as database
     dim rs as recordset
     private sub cmdseek_click()
     dim strseek as string
     set db=dattitles.database  *对db和rs 赋值其中dattitles为数据控件
     set rs=dattitles.recordset
     strseek=Inputbox("请输入要查找的记录", ,"查找")
     rs.index="title" *定义当前索引
     rs.recordset.seek "=",strseek
     If rs.nomatch then
     msgbox("你要查找的记录不在数据库中")
     rs.movefirst
     Endif
     End sub
    

    运行该程序,我的本意是:查找记录时,如果该记录在数据库中则显示之,如不在,则显示msgbox所定义的语句。可是当我运行后,却发现如果记录在则显示正常,如果不存在该记录或者在输入框上直接按下“确定”或“取消”后,首先给出vb的模式对话框,显示 该记录不存在 ,按下“确定”后才出现我所定义的msgbox语句 你要查找的记录不在数据库中 。
    对以上所出现的情况,我查看了一些资料,也未能找到答案,在网上浏览后见到你的信箱。特给你发一封信,请求帮助,希望你能抽空看一看我的问题,给我回信解答一下。多谢。
    急切盼望你的回信。(Mali)
   
    Zhao Yu的意见:
    出现这个问题的原因是你有其它控件(如TextBox)与Data控件绑定,当调用Seek方法没有找到匹配记录时,"If the Seek method fails to locate a match, the NoMatch property is set to True, and the current record is undefined."(MSDN),所以TextBox会报个错误。
    解决的方法是在查询前解除TextBox与Data控件间的绑定 Set Text1.DataSource=Nothing,然后进行查询,最后再恢复绑定链接就可以了。
    
    Frank的意见:
    1.你能否试着用代码编程(DAO),使用代码编程比使用控件绑定要快很多且容易控制。
    建议:真正的数据库程序是不会要数据控件去绑定的,应该有自已的代码。
    dim rs as recordset
    set rs=db.openrecordset(SQL 语句)
    if rs.recordcount>0 then
     ....
    else
     msgbox "No match Recordset!"
    end if
    rs.close
    

    2.建议使用ADO编程。ADO的速度比DAO快很多。具体ADO的应用请参考http://xufb.top263.net

    

此问题由Zhao Yu等回答。

附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 错误信息, error, error message, link, compile, runtime, 数据控件, data control

   
 
把这个问题推荐给朋友
   
 
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio