Access交流中心

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

新手求助 另一窗体子窗体赋值问题

张龙  发表于:2012-07-06 10:40:01  
复制

关注这个网站很长时间了,今天是第一次正式注册账户,跟大家一起学习access,以后希望大家多多帮我。

今天我研究这个遇到个困难,是这样的:

我复制了新增窗体,将他变成查询窗体,输入查询内容后,点击查询打开一个窗体,并在打开窗体的子窗体中显示查询结果。

可是子窗体不能显示,请帮助我谢谢,代码如下:

 

  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 & "([性别] 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 & "([当前职级] 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
    If Len(strWhere) > 0 Then
        strWhere = Left(strWhere, Len(strWhere) - 5)
    End If
    Debug.Print strWhere
    DoCmd.OpenForm "frm员工查询明细"
    frm员工查询明细子窗体.Form.recordsourse = strWhere

附件如下

点击下载此附件

 

Top
风行 发表于:2012-07-06 11:45:32

方法:由易到难,由简到杂

你不要一下子写这么多查询条件,可以先写两个条件,测试成功后,然后再一步步增加条件

这样容易查出问题所在



张龙 发表于:2012-07-06 12:19:23

风行版主你好,上面的查询应该没有问题,我已经测试过了,单独的一个不含子窗体的窗体也可以查询,就是用包含子窗体的窗体就不能得到结果了。

问题应该出现在最后两句   

DoCmd.OpenForm "frm员工查询明细"
frm员工查询明细子窗体.Form.recordsourse = strWhere

 

调试了一上午也没有成功,就是不太了解向其他窗体的子窗体添加查询数据源的问题。

请协助



张龙 发表于:2012-07-06 12:40:08

只要一点查询,就出这个提示,但是这个窗体的名称没有问题啊。不知道怎么了。



学习者 发表于:2012-07-06 14:35:33

你的strWhere不是全局变量,你怎么能跳出去调用呢?应该在设置的局部变量引用时有范围的,

1、查询语句要把握  字段的格式,别什么都用 like   

2、以你写的方式好像是要输入条件的时候会弹出条件框,输入条件后,条件传给子窗体去查询数据,

建议条件与子窗体数据放在同一个Form中去。



风行 发表于:2012-07-06 16:31:53

点击下载此附件 

改好了,你子窗体都没有绑定记录源



张龙 发表于:2012-07-07 10:56:11

谢谢风行版   

Forms!frm员工查询明细!frm员工查询明细子窗体.Form.Filter = strWhere

Forms!frm员工查询明细!frm员工查询明细子窗体.Form.FilterOn = True

这个完全解决问题。



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