Office中国论坛/Access中国论坛

标题: 请问怎么样实现子窗体查询唯一值? [打印本页]

作者: king7    时间: 2007-6-18 05:24
标题: 请问怎么样实现子窗体查询唯一值?
怎么样才可以使用代码来得到查询的结果!

用文本框查询,在子窗体得到查询结果,已经可以实现,但是加深的查询就没有办法,比如子窗体返回查询结果的字段A,B,C,D,E其中C为日期型,其他都为字符型,现在想实现查询结果是,文本框输入A字段的值,当结果有两个以上的,就用C来判断,得到最终的结果,麻烦大家帮忙想想办法。

数据表

A          B              C                  D               E

1          1111         2007-3-5     QQQ         DDDD

2          2222         2007-5-8     QQQ         DDDD

1          1122         2007-3-8     QQQ         DDDD

希望得到的结果,通过代码判断(得到最后的日期的那条记录),在子窗体出现

1          1122         2007-3-8     QQQ         DDDD


作者: tz-chf    时间: 2007-6-18 06:51
用日期排序,取第一条或最后一条(看是正序还是倒序了)。

查询的A字段的条件是:forms![查询窗体].[文本框],requery子窗体。

我的一般做法是:

1、子窗体的记录源不写过滤条件。

2、主窗体(写子窗体的记录源,这样子窗体显示是空的,好看点)

Private Sub Form_Open(Cancel As Integer)
    Dim str As String
   
    str = "select * from findAsub查询 where 1=2"
   
    Me.Findsub.Form.RecordSource = str
   

End Sub

3、在弹出的窗体选择输入查询条件(这样可以多条件组合查询,免得主窗体控件太多,界面不清爽),更新子窗体。并有报表可以打印输出查到的内容。

查询条件窗体:


Private Sub cmdFind_Click()
On Error GoTo Err_cmdFind_Click

    Dim str As String
   
    If Not IsNull(Me.器械ID) Then
        str = str & " and 器械ID=" & Me.器械ID
    End If
        
    If Not IsNull(Me.器械类别ID) Then
        str = str & " and 器械类别ID=" & Me.器械类别ID
    End If
   
    If Not IsNull(Me.日期起) Then
        str = str & " and 有效期 between #1970-01-01# and #" & Me.日期起 & "#"
    End If
            
    If str <> "" Then
            str = "select * from findAsub查询 where " & Mid(str, 6)
        
            Forms![frmfindA].Findsub.Form.RecordSource = str
            Forms![frmfindA].Text22.Requery
            Forms![frmfindA].Text33.Requery
            Forms![frmfindA].Text35 = str
    End If
   
    DoCmd.Close

Exit_cmdFind_Click:
    Exit Sub

Err_cmdFind_Click:
    MsgBox Err.Description
    Resume Exit_cmdFind_Click
   
End Sub
说明:text35是主窗体的不可见的文本框(就是子窗体的记录源),给报表提供数据源。

[attach]24975[/attach]
[attach]24976[/attach]


[此贴子已经被作者于2007-6-17 22:53:38编辑过]


作者: king7    时间: 2007-6-18 20:11
谢谢TZ-CHF的回答,好像按你说的办法,我还要在日期的查询框那里填些具体的时间 才能得到我想要的结果。

我的本意是查询A字段就能得到最后那个日期的记录,不需要填写日期框的内容来查询。


作者: 阳光1121    时间: 2007-9-14 13:59
学学好好学习一下.谢谢.




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3