Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

大侠帮忙,点击清除按钮出现“你不能将数值指定给这个对象”

飞雪扬花  发表于:2011-11-07 22:29:45  
复制

侠帮忙,点击清除按钮出现“你不能将数值指定给这个对象”
Private Sub cmd查询_Click()
   On Error GoTo Err_cmd查询_Click
   
   Dim strWhere As String  '定义条件字符串

    strWhere = ""    '设定初始值-空字符串

    '判断【合同编号】条件是否有输入的值
    If Not IsNull(Me.合同编号) Then
        '有输入
        strWhere = strWhere & "([合同编号] like '*" & Me.合同编号 & "*') AND "
    End If

    '判断【合同类型】条件是否有输入的值
    If Not IsNull(Me.合同类型) Then
        '有输入
        strWhere = strWhere & "([合同类型] like '*" & Me.合同类型 & "*') AND "
    End If

    '判断【供应商名称】条件是否有输入的值
    If Not IsNull(Me.供应商名称) Then
        '有输入
        strWhere = strWhere & "([供应商名称] like '*" & Me.供应商名称 & "*') AND "
    End If

    '判断【单据类型】条件是否有输入的值
    If Not IsNull(Me.单据类型) Then
        '有输入
        strWhere = strWhere & "([单据类型] like '*" & Me.单据类型 & "*') AND "
    End If

     '判断【开始日期】条件是否有输入的值,由于有【开始日期】【截止日期】两个文本框
    '所以要分开来考虑
    If Not IsNull(Me.日期开始) Then
        '【开始日期】有输入
        strWhere = strWhere & "([日期开始] >= #" & Format(Me.日期开始, "yyyy-mm-dd") & "#) AND "
    End If
    If Not IsNull(Me.日期截止) Then
        '【日期截止】有输入
        strWhere = strWhere & "([日期截止] <= #" & Format(Me.日期截止, "yyyy-mm-dd") & "#) AND "
    End If

    '如果输入了条件,那么strWhere的最后肯定有" AND ",这是我们不需要的,
    '要用LEFT函数截掉这5个字符。
    If Len(strWhere) > 0 Then
        '有输入条件
        strWhere = Left(strWhere, Len(strWhere) - 5)
    End If

    '先在立即窗口显示一下strWhere的值,代码调试完成后可以取消下一句
    Debug.Print strWhere

    '让子窗体应用窗体查询
    Me.[W_HFF_采购子窗体].Form.Filter = strWhere
    Me.[W_HFF_采购子窗体].Form.FilterOn = True



Exit_cmd查询_Click:
    Exit Sub

Err_cmd查询_Click:
    MsgBox ERR.Description
    Resume Exit_cmd查询_Click

End Sub
Private Sub cmd清除_Click()

    'Screen.PreviousControl.SetFocus
    'DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70
   
On Error GoTo Err_cmd清除_Click
'这里将使用FOR EACH CONTROL的方法来清除控件的值
'这在控件比较多的时候非常有用。
'================================

    Dim ctl As Control
   
    For Each ctl In Me.Controls
   
        '根据ctl的控件类型来选择
        Select Case ctl.ControlType
            Case acTextBox '是文本框,要清空(注意,子窗体下面还有两个锁定的文本框不能赋值)
                If ctl.Locked = False Then ctl.Value = Null
               
            Case acComboBox '是组合框,也要清空
                ctl.Value = Null
            '其它类型的控件不处理
        
        End Select
    Next
   
    '取消子窗体的筛选
    Me.[W_HFF_采购子窗体].Form.Filter = ""
    Me.[W_HFF_采购子窗体].Form.FilterOn = False
    Me.txt合同金额 = 0
    Me.txt付款金额 = 0
    Me.txt**金额 = 0
    Me.txt合同应付款 = 0
    Me.txt**应付款 = 0

Exit_cmd清除_Click:
    Exit Sub

Err_cmd清除_Click:
    MsgBox ERR.Description
    Resume Exit_cmd清除_Click
   
End Sub





选择“合同类型”,点击查询,查不到相关数据,实际上是有数据的;点击清除按钮,
显示“你不能将数值指定给这个对象”
哪位大侠帮帮我!

 

Top
西出阳关无故人 发表于:2011-11-08 13:35:41

把实例传上来嘛



飞雪扬花 发表于:2011-11-08 20:28:37

除了上面的问题,还是登陆权限和密码的代码也帮我写一下,谢谢各位大侠了

点击下载此附件

飞雪扬花 发表于:2011-11-08 20:41:19

不好意思,发错了,重新发一遍

点击下载此附件

dbaseIIIer 发表于:2011-11-09 05:29:09

你的控件是 计算字段(即数据源以“=”开头的控件)就不能赋值哦!



坚 发表于:2012-02-21 15:10:52

原因可能就在“子窗体下面还有两个锁定的文本框不能赋值”。

请楼主检查一下主窗体中,是否有控件来源是以“=”开头的文本框没有锁定。

在属性“是否锁定” 中设定为“是”后,问题就解决了。

估计楼主这个查询是参考刘小军《ACCESS常用的窗体查询方法及实例》中的实例编写的,因为这个实例也是同样这个问题。



总记录:5篇  页次:1/1 9 1 :