CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  数据库(包含打印,安装,报表)

对大家来说是一很简单的问题

楼主Risinging()2004-08-04 13:53:39 在 VB / 数据库(包含打印,安装,报表) 提问

各们高手,有个问题想请教一下:我在想做一个让两个组合框产生联动效果时当执行到  
  Set   M_rec   =   Db.OpenRecordset(M_SQL)(第五行)时就出现了,实时错误’424’     要求对象       的提示,不知道是为什么,麻烦各位高手指点下迷津,Dim   Db   As   Database、Dim   M_rec   As   Recordset、  
  Dim   M_SQL   As   String已经在别的窗体的通用中定义了,还有在Form_Load中的语句都执行正常,已经将数据库中的信息添加到组合框一(CmbPhoneName)中了  
   
  谢谢大家了  
   
  Private   Sub   CmbPhoneName_Click()  
  Dim   PhoneID   As   String  
   
  M_SQL   =   "select   id   from   phonesort   where   phonename='"   +   CmbPhoneName.Text   +   "'"  
  Set   M_rec   =   Db.OpenRecordset(M_SQL)  
  PhoneID   =   M_rec!id  
  M_SQL   =   "select   phonetype   from   phonetype   where   phonesortid='"   +   PhoneID   +   "'"  
  Set   M_rec   =   Db.OpenRecordset(M_SQL)  
  M_rec.MoveLast  
  M_rec.movefrist  
  For   i   =   0   To   M_rec.RecordCount   -   1  
      CmbPhoneType.AddItem   M_rec!phonetype  
      M_rec.MoveNext  
  Next  
  End   Sub  
   
   
  Private   Sub   Form_Load()  
  Dim   Dbpath   As   String  
   
  Dbpath   =   App.Path   +   "\phone.mdb"            
   
  Set   Db   =   DBEngine.Workspaces(0).OpenDatabase(Dbpath)  
   
  M_SQL   =   "select   phonename   from   phonesort"  
  Set   M_rec   =   Db.OpenRecordset(M_SQL)  
   
  M_rec.MoveLast            
  M_rec.MoveFirst  
   
  For   i   =   0   To   M_rec.RecordCount   -   1  
      CmbPhoneName.AddItem   M_rec!phonename  
      M_rec.MoveNext  
  Next  
  End   Sub  
  问题点数:30、回复次数:20Top

1 楼tztz520(午夜逛街)回复于 2004-08-04 14:07:05 得分 2

M_SQL   =   "select   phonetype   from   phonetype   where   phonesortid='"   +   PhoneID   +   "'"这句  
  你确定"phonetype"是一个表吗?  
  Top

2 楼SoHo_Andy(冰)回复于 2004-08-04 14:09:05 得分 3

打开的记录集没有关闭  
   
  试试载form_load   最后加入  
  m_rec.close  
   
  试试  
   
  或者在  
  Set   M_rec   =   Db.OpenRecordset(M_SQL)   之前  
  加入  
  if   m_rec.state=1   then  
        m_rec.close  
  end   ifTop

3 楼tztz520(午夜逛街)回复于 2004-08-04 14:14:28 得分 2

DAO没关闭也没问题的.Top

4 楼Risinging()回复于 2004-08-04 14:27:09 得分 0

没错,phonetype是一个表名也是一个字段名,再说还没执行到那一步就提示错误了呀,麻烦再看看还有什么别的问题吗Top

5 楼Risinging()回复于 2004-08-04 14:38:42 得分 0

加了m_rec.close也不好用Top

6 楼Risinging()回复于 2004-08-08 13:10:44 得分 0

麻烦大家再帮我想想该怎么解决呀,谢谢了Top

7 楼RUKYO(蠢蠢的男子汉 - 恋星夜柔光,舔烈酒豪情)回复于 2004-08-08 15:48:56 得分 10

Option   Explicit  
          Public   Db   As   Database  
          Public   mWrk   As   Workspace  
          Public   M_rec   As   Recordset  
   
  Private   Sub   CmbPhoneName_Click()  
  Dim   PhoneID   As   String  
   
  M_SQL   =   "select   id   from   phonesort   where   phonename='"   +   CmbPhoneName.Text   +   "'"  
  Set   M_rec   =   Db.OpenRecordset(M_SQL)  
  PhoneID   =   M_rec!id  
  M_SQL   =   "select   phonetype   from   phonetype   where   phonesortid='"   +   PhoneID   +   "'"  
  Set   M_rec   =   Db.OpenRecordset(M_SQL)  
  M_rec.MoveLast  
  M_rec.movefrist  
  For   i   =   0   To   M_rec.RecordCount   -   1  
      CmbPhoneType.AddItem   M_rec!phonetype  
      M_rec.MoveNext  
  Next  
  End   Sub  
   
   
  Private   Sub   Form_Load()  
  Dim   Dbpath   As   String  
   
  Dbpath   =   App.Path   +   "\phone.mdb"  
   
    Set   mWrk   =   CreateWorkspace("",   "admin",   "",   dbUseJet)  
    Set   Db   =   mWrk.OpenDatabase(Dbpath)  
  M_SQL   =   "select   phonename   from   phonesort"  
  Set   M_rec   =   Db.OpenRecordset(M_SQL)  
   
  M_rec.MoveLast  
  M_rec.MoveFirst  
   
  For   i   =   0   To   M_rec.RecordCount   -   1  
      CmbPhoneName.AddItem   M_rec!phonename  
      M_rec.MoveNext  
  Next  
  End   Sub  
   
   
  Top

8 楼Risinging()回复于 2004-08-08 17:29:26 得分 0

RUKYO,你好,谢谢你的帮助,不过这把连Form_Load都过不去了,黄色的标记指在Form_Load上就停了,提示变量未定义  
   
  小弟才学VB,还有个问题想请教一下:我的这个写法Set   Db   =   DBEngine.Workspaces(0).OpenDatabase(Dbpath)有没有问题  
   
  谢谢了Top

9 楼RUKYO(蠢蠢的男子汉 - 恋星夜柔光,舔烈酒豪情)回复于 2004-08-08 17:33:17 得分 2

你不是说M_SQL在别的窗体已经定义了吗,如果这样在Option   Explicit下加上Public   M_SQL   As   StringTop

10 楼RUKYO(蠢蠢的男子汉 - 恋星夜柔光,舔烈酒豪情)回复于 2004-08-08 17:36:06 得分 2

Set   mWrk   =   DBEngine.CreateWorkspace("",   "admin",   "",   dbUseJet)  
   
  Set   Db   =   DBEngine.Workspaces(0).OpenDatabase(Dbpath,False,False)Top

11 楼Risinging()回复于 2004-08-08 17:55:25 得分 0

对呀,是在别的窗体中定义了  
  我一开始就把Public   M_SQL   As   String加了一下,不然的是指向M_SQL   =   "select   phonename   from   phonesort"提示变量未定义  
  加了后是指在Form_Load上  
  Top

12 楼Risinging()回复于 2004-08-08 17:59:08 得分 0

这是我的第一个窗体的代码,只有两个组合框和一个按扭,为的是向数据库中添加电话的种类和型号  
   
  麻烦了老大  
   
  Dim   Db   As   Database  
  Dim   M_rec   As   Recordset  
  Dim   M_SQL   As   String  
   
   
  Private   Sub   CmdAdd_Click()  
  Dim   PhoneID   As   String               '用来储存PhoneSort表中ID的值  
   
  If   CmbPhoneName.Text   =   ""   Then             '判断电话名称和电话型号是否为空  
      MsgBox   ("电话名称不能为空")  
  End   If  
  If   TxtPhoneType.Text   =   ""   Then  
      MsgBox   ("电话的型号不能为空")  
  End   If  
   
  '判断组合框中电话的名称是否为新品种的电话(也就是说看数据库中以前有没有),没有的话就往PhoneSort表中添加新的品种  
  M_SQL   =   "select   phonename   from   phonesort   where   phonename='"   +   CmbPhoneName.Text   +   "'"  
  Set   M_rec   =   Db.OpenRecordset(M_SQL)  
  If   M_rec.EOF   Or   M_rec.BOF   Then  
      M_SQL   =   "insert   into   phonesort(phonename)   values('"   +   CmbPhoneName.Text   +   "')"  
      Db.Execute   M_SQL  
       
      CmbPhoneName.AddItem   CmbPhoneName.Text             '这句话是为了如果有新增电话名的话,刷新,使之显示出来  
  End   If  
   
  M_SQL   =   "select   id   from   phonesort   where   phonename='"   +   CmbPhoneName.Text   +   "'"             '这句话一是为了如果是新建的电话品种的话重新刷新一下数据库再取其ID  
                                                                                                                                                                          '二是新添数据时因为PhoneSort和PhoneType这两个表是通过ID关联的,所以要取一下ID  
  Set   M_rec   =   Db.OpenRecordset(M_SQL)  
  PhoneID   =   M_rec!id  
   
  '以下是判断要向数据库中添加的电话型号是否有重复  
  M_SQL   =   "select   *   from   phonetype   where   phonesortid='"   +   PhoneID   +   "'and   phonetype='"   +   TxtPhoneType.Text   +   "'"  
  Set   M_rec   =   Db.OpenRecordset(M_SQL)  
  If   M_rec.EOF   Or   M_rec.BOF   Then  
      '如果重复才让添加  
      M_SQL   =   "insert   into   phonetype(phonesortid,phonetype)   values('"   +   PhoneID   +   "','"   +   TxtPhoneType.Text   +   "')"  
      Db.Execute   M_SQL  
  Else  
      a   =   CmbPhoneName.Text   +   "   "   +   TxtPhoneType.Text   +   "已经存在了"  
      MsgBox   (a)  
  End   If  
               
  End   Sub  
   
  Private   Sub   Form_Load()  
  Dim   Dbpath   As   String  
   
  Dbpath   =   App.Path   +   "\phone.mdb"  
   
  Set   Db   =   DBEngine.Workspaces(0).OpenDatabase(Dbpath)  
  M_SQL   =   "select   phonename   from   phonesort"  
  Set   M_rec   =   Db.OpenRecordset(M_SQL)  
   
  M_rec.MoveLast  
  M_rec.MoveFirst  
   
  For   i   =   0   To   M_rec.RecordCount   -   1  
      CmbPhoneName.AddItem   M_rec!phonename  
      M_rec.MoveNext  
  Next  
  End   Sub  
   
  Private   Sub   Form_Unload(Cancel   As   Integer)  
  Db.Close  
  End   Sub  
   
  Private   Sub   TxtPhoneType_GotFocus()  
  TxtPhoneType.Text   =   ""  
  End   Sub  
  Top

13 楼Risinging()回复于 2004-08-08 18:51:04 得分 0

等了好几天了Top

14 楼mycys(IT民工)回复于 2004-08-22 15:51:31 得分 4

学习Top

15 楼Risinging()回复于 2004-08-23 12:39:40 得分 0

各位高手帮帮忙呀Top

16 楼Risinging()回复于 2004-08-24 10:51:11 得分 0

各位高手,帮忙看看呀,小弟拔号在线等,谢谢Top

17 楼wumylove1234(毁于随)回复于 2004-08-25 00:35:19 得分 5

唉.扔了DAO嘛!学ADO.Top

18 楼Risinging()回复于 2004-09-04 09:16:48 得分 0

还是麻烦各位高手帮忙看看吧,为什么Form_Load中的M_rec可以用,而CmbPhoneName_Click就不可以了呢,谢谢了Top

19 楼Risinging()回复于 2004-09-07 15:18:21 得分 0

upTop

20 楼Risinging()回复于 2004-09-12 10:49:45 得分 0

结了吧,也没什么人回答了Top

相关问题

  • 对大家来说是一个很简单的问题
  • form提交问题,对大家来说应该很简单
  • 急问:如何得到昨天的日期(对大家来说很简单)?
  • 初来乍到有个初学的问题!对大家来说很简单!放分!.......
  • access 转sql 问题, 请来看看,对大家来说可能很简单!! 在线等!
  • 公司要用jsp做网站,鄙人刚学,有几个问题问大家,对大家来说很简单的!
  • SQL语句,帮忙,对大家来说简单的,基础问题,见笑了
  • 对大家来说爆简单的问题,ASP自动换行的问题
  • 我是菜菜。请帮我。问题对大家来说很容易。
  • 急但是对大家来说容易得很,关于卸载WIN2K用什么命令?SYSC吗?大送分

关键词

  • db
  • sql
  • cmbphonename
  • phoneid
  • phonetype
  • rec
  • openrecordset
  • dim
  • set

得分解答快速导航

  • 帖主:Risinging
  • tztz520
  • SoHo_Andy
  • tztz520
  • RUKYO
  • RUKYO
  • RUKYO
  • mycys
  • wumylove1234

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo