注册 登录
编程论坛 VB.NET论坛

怎样解决“没有为命令对象设置命令”的错误?

zhangzhen 发布于 2011-07-11 19:21, 3401 次点击
     
程序代码:
Private Sub dataQuery_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        REM 创建连接对象并打开连接
        Con = New ADODB.Connection()
        Con.ConnectionString = "Dbq=" & System.Windows.Forms.Application.StartupPath & "\钻孔情况表.mdb;Driver={Microsoft Access Driver (*.mdb)}"
        Con.Open()
        REM 创建记录集对象并获取表的数据
        Rec = New ADODB.Recordset()
        Rec.CursorType = ADODB.CursorTypeEnum.adOpenKeyset
        Rec.LockType = ADODB.LockTypeEnum.adLockOptimistic
        Rec.ActiveConnection = Con
        If 数据库.BindingNavigator.BindingSource Is 数据库.钻孔数据表BindingSource Then
            Rec.Open("钻孔数据表")
        ElseIf 数据库.BindingNavigator.BindingSource Is 数据库.钻孔情况表BindingSource Then
            Rec.Open("钻孔情况表")
        ElseIf 数据库.BindingNavigator.BindingSource Is 数据库.标贯表BindingSource Then
            Rec.Open("标贯表")
        End If
        REM 向第一个组合框中加入表中各字段的名称
        CmbFields.Items.Clear()
        CmbFields.Items.Add("字段名")
        Dim iCount As Integer
        For iCount = 0 To Rec.Fields.Count - 1 '错误:没有为命令对象设置命令
            CmbFields.Items.Add(Rec.Fields.Item(iCount).Name)
        Next
        CmbFields.SelectedIndex = 0

    End Sub
这是我的一段代码!问题好像就出在 数据库.BindingNavigator.BindingSource上 数据库是另外一个窗体,如果先启动的是数据库窗体,然后通过数据库窗体打开dataQuery就没有任何问题,但是如果把这两个窗体嵌入到主程序中,通过主程序打开数据库窗体,然后再打开dataQuery就会出现错误:没有为命令对象设置命令,我接触编程时间很多,对于很多东西都不是特别了解,不知我描述的是否清楚,望高手指点迷津,谢谢!
12 回复
#2
不说也罢2011-07-11 19:33
这可以是因为你的代码中的IF条件没有满足所造成的。通俗地讲,也就是REC没有OPEN所致。

另外,.NET下操作数据库用吧。在命名空间引用 imports system.data
我还是觉得楼主要找一个例子啃一啃才好。
#3
zhangzhen2011-07-11 19:43
回复 2楼 不说也罢
确实是这样的 是if语句没有满足,但是当数据库窗体是启动窗体时就正常啊  为什么嵌入主窗体后if语句就不能满足了呢?找些什么例子呢?
#4
不说也罢2011-07-11 20:05
名称为“数据库”的窗体没有被初始化时,是无法获得数据库.BindingNavigator.BindingSource的,导致你的IF条件不能满足
你尝试在主窗体的LOAD事件中,加入加载数据库的窗体的代码。
#5
不说也罢2011-07-11 20:07
找例子
http://www.baidu.com/baidu?word=vb%2Enet+%E6%95%B0%E6%8D%AE%E5%BA%93%E5%AE%9E%E4%BE%8B&tn=ylmf_2_dg&ie=utf-8
#6
不说也罢2011-07-11 20:08
本论坛也有很多例子:
https://bbs.bccn.net/forumdisplay.php?fid=114&filter=digest
要学会使用论坛的搜索功能哦
#7
zhangzhen2011-07-11 20:41
回复 4楼 不说也罢
能为我解释一下吗 我按着你说的做 可以打开dataQuery窗体,但不懂这是为什么?
#8
不说也罢2011-07-11 20:55
这是一个很简单的逻辑问题啊。你在顶楼的代码中,引用了名称为“数据库”的窗体对象,该窗体中的BindingNavigator.BindingSource属性没有被设置,肯定是满足不了你的判断条件。你看一下,数据库.BindingNavigator.BindingSource属性是何时设置的?肯定不在LOAD事件中吧。窗体的构造函数里肯定也没有。
#9
zhangzhen2011-07-11 22:21
回复 8楼 不说也罢
还是麻烦你帮我看一下吧 我改了一个简易的程序,具体问题也在read me.txt中有所描述,按着你说的我还是,查询窗体能出现,但是查询无法进行,我都快搞糊涂了,我真的不懂,就是看一些代码,也无济于事!谢谢! 附件见楼下!
#10
zhangzhen2011-07-11 22:23
只有本站会员才能查看附件,请 登录
#11
zhangzhen2011-07-12 20:39
急死了 又被这个问题搞了一天 头都大了  我恨死
#12
zhangzhen2011-07-12 23:43
我早该想到的  感谢百度知道的xjnzhidao网友  谢谢 也谢谢版主
Form3改为
Public Class Form3    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        Form1.Show()    End SubEnd Class
#13
imworld2011-08-08 04:09
只能恨自己,不要恨
1