Access:如何接收文本框作为查询条件,并实时刷新查询

今天,想设计一个窗体,窗体中有个文本框,然后按文本框的条件实时更新查询清单。

在上图输入时间

查询结果就实时刷新,这个不是在窗体中刷新,而是直接刷新Access默认的查询。

方法一:

代码部分:

1,删除旧的查询(我不知道这个是不是很好,但是只有删除旧的,才能使用CreateQueryDef

Dim qryname, sql As String
Dim Qry1 As QueryDef
For Each Qry1 In CurrentDb.QueryDefs
If Qry1.Name = "按日期查询" Then
CurrentDb.QueryDefs.Delete Qry1.Name
Exit For
End If
Next

2,刷新项目清单中的Query,因为新建Query很快会被执行,所有基本感觉不到被删除了。

CurrentDb.QueryDefs.Refresh

3,新建一个和之前名字一样的Query:

sql = "select * from 日记账表 where 日期= #" & Text0.Value & "#"
qryname = "按日期查询"
CurrentDb.CreateQueryDef qryname, sql

4,判断指定的Query是否被打开,如果打开状态,我们就关闭它。

为什么呢?

查询的清单我不知道怎么实时刷新?但是我知道关闭查询,再打开查询,查询结果就会被刷新了。因为速度很快,基本感觉不到关闭>重新打开的这个过程。

On Error Resume Next
If SysCmd(acSysCmdGetObjectState, acQuery, Qry1.Name) <> 0 Then
DoCmd.Close acQuery, Qry1.Name
End If

5,重新执行查询,并重新打开:

DoCmd.OpenQuery Qry1.Name

第二种方法:

1,直接在QBE中设计(直接以某个控件的值为条件

SQL代码等于:

SELECT 日记账表.*
FROM 账户列表 INNER JOIN 日记账表 ON 账户列表.账户编号 = 日记账表.账户编号
WHERE (((日记账表.日期)=[Forms]![Form1]![Text0]));

2,在VBE中输入代码:

Tips:ADODB那几句连接数据库不需要写的!放在这个仅做强化记忆用!

Private Sub Command2_Click()

'Dim str
'Dim rs As New ADODB.Recordset
'Set rs = New ADODB.Recordset
'str = "select * from 日记账表"
'rs.Open str, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
On Error Resume Next
If SysCmd(acSysCmdGetObjectState, acQuery, "Q1") <> 0 Then
    DoCmd.Close acQuery, "Q1"
End If
DoCmd.OpenQuery "Q1"

End Sub

小结:

1,方法一是使用VBA和SQL新建一个查询

2,方法二是直接使用Access的查询设计已有的查询。

个人偏好,还是喜欢方法一,可以代码一路撸到底。

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值