Access交流中心

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

急:组合框联动问题

李子  发表于:2017-02-23 13:04:45  
复制

      笔者在窗体上创建了两个组合框:COMBO4 、COMBO7 ,前者关联一个代码表,码值如“01”、“02”等,后者关联一个数据表,其中一个字段的值也为“01”、“02”等,现在打算根据前者的不同选项,过滤显示后者的数据内容。但在COMBO4选好后并触发COMBO7的Me.Combo7.Requery 时,总是提示以下对话框(附图),要求手工输入Combo4的值。

     其中Combo7的行来源SQL设定为:

      SELECT tblDM_TableField.table_mc, tblDM_TableField.table_field, tblDM_TableField.table_field_mc, tblDM_TableField.table_field_type FROM tblDM_TableField WHERE (((tblDM_TableField.table_mc)=[Me].[Combo4])); 


     请大虾给予指点。多谢!


    附报错图

 

Top
MDZZ 发表于:2017-02-23 13:55:13

 应该用变量的写法 

文本型表示法 '" & Me.Combo4   & "'
日期型表示法 #" & Me.Combo4   & "#
数值型(布尔型)表示法 " & Me.Combo4  





李子 发表于:2017-02-23 14:26:13

还是不行,窗体加载时初始值是对的,可是Me.Combo4 重新选择后,感觉 Me.Combo7.Requery 似乎没作用,Combo7不刷新,下拉框还是初始加载时的值,但查看Me.Combo4.value的值已更新。哎,无语!



李子 发表于:2017-02-23 14:34:46

附上这段代码:

Private Sub Command6_Click()
On Error GoTo Err_Command6_Click
    Dim stDocName As String
    Dim stLinkCriteria As String
    
    Select Case Me.Combo4.Value
        Case Is = "01"   '选择书籍
        Me.tblZL_sjjl_child1.SourceObject = "表.tblZL_sjjl"
        Me.Command6.Caption = "选了书籍类"
      
        Case Is = "02"   '选择刊物
        Me.tblZL_sjjl_child1.SourceObject = "表.tblZL_kwjl"
        Me.Command6.Caption = "选了刊物类"
          
       Case Is = "03"   '选择报纸
        Me.tblZL_sjjl_child1.SourceObject = "表.tblZL_bzjl"
        Me.Command6.Caption = "选了报纸类"
      
       Case Is = Null
        Me.Command6.Caption = "请重新选择!"
        
    End Select
         
    Me.Combo7.Requery  '查询条目选项刷新
    Me.tblZL_sjjl_child1.Requery '数据表刷新
    
    ' Me.Text26.Value = Combo7.RowSource

Exit_Command6_Click:
    Exit Sub

Err_Command6_Click:
    MsgBox Err.Description
    Resume Exit_Command6_Click
    
End Sub



李子 发表于:2017-02-23 14:53:37
经过反复调试,基本已确认是上面的代码中这句话: Me.Combo7.Requery  没有起作用。请求那位高手给予指点。万分感谢!

MDZZ 发表于:2017-02-23 15:10:30
你行来源不是写在代码里面的? 那就要用=forms!窗体名!控件名

MDZZ 发表于:2017-02-23 15:19:07

Access实现组合框联动详细教程[Access软件网] http://www.accessoft.com/article-show.asp?id=9957

学习下这个



杜超 发表于:2017-02-23 15:41:28


http://www.accessoft.com/article-show.asp?id=7802





李子 发表于:2017-02-23 15:48:26

多谢指点,可还是没用。无语!

试了改用:' " & Forms!frmMain_bjgl!Combo4 & " ' 

也试了下面

Private Sub Combo4_AfterUpdate()
    Me.Combo7.Requery  '查询条目选项刷新
    Me.Combo7 = ""
End Sub
都没用。

靠!太难了!



李子 发表于:2017-02-23 16:02:47

终于搞定了,要把在窗体加载时的 Combo7.RowSource=... 这句话在 Private Sub Command6_Click() 过程中重写一遍。

如下:

Combo7.RowSource = " SELECT tblDM_TableField.table_mc, tblDM_TableField.table_field, tblDM_TableField.table_field_mc, tblDM_TableField.table_field_type " _

                & " FROM tblDM_TableField  " & " WHERE tblDM_TableField.table_mc = '" & Me.Combo4.Value & "'"
 
    Me.Combo7.Requery  '查询条目选项刷新
    Me.Combo7 = ""

    Me.tblZL_sjjl_child1.Requery '数据表刷新

但本人不明白,为什么要这样,难道 Combo7.RowSource=... 这句话执行后,不能在Private Sub Command6_Click() 过程中直接引用吗?

看来还要好好学学 各类控件值和作用域的关系。请大虾能否推荐一下这方面的学习资料,本人需要好好拜读一下,否则太耽误事了。



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