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