作为Access和VBA的业余爱好者,我已经碰到了以下内容......
在MS Access 2007中,我有以下查询:
SELECT .... WHERE format(NZ(l_f_date),'yyyy-mm-dd')<=**'2012-04-03'**);
我已经缩短了一点。
数据库有大约20个查询需要每天运行。我已经创建了4个宏来以我需要它们运行的方式运行查询组。问题是,在每个查询中,我首先要更改日期(就像在上面的查询中一样)。我正在寻找将其自动化的方法。
我有一个想法是创建一个表单,为它上面的每个宏放置一个按钮,2个文本框输入我需要的2个日期。现在,我需要这些日期出现在粗体部分。在我考虑它时,我有两个选择:
我认为我可以管理第一个解决方案,但第二个解决方案让我头疼。
你能帮忙吗?
评论中的SQL
select proc_desc,count(s) as broj
into upit3
from ( select distinct a.case_id as s,
a.org_case_id,a.act_date as day,d.prod_id,d.prod_desc,
c.fname,c.dpd,c.due_amount,proc_id,proc_desc
from actions_b as a, cases_old_b as c,processes_b as p,
product_dict_b as d
where a.org_case_id=c.[org_ case_id]
and a.act_date=Forms!Form!Text10 and d.prod_id=c.product
and p.proc_id=c.process and not_lead=1 )
group by proc_desc order by proc_desc;
好的,样本数据......
在x.dates中,值与此完全相同: 03.04.2012
a.act_date中的值如下所示: 01.07.2011 13:53:56
所以,如果不能使用这些值,是否可以在查询中使用LIKE语句?伪:WHERE a.act_date LIKE x.date%
如果可能,如何使用它?我是sql和访问查询的新手...我谷歌但有时候,像这次,我被卡住了。
感谢
答案 0 :(得分:1)
这个结构:
SELECT .... WHERE format(NZ(l_f_date),'yyyy-mm-dd')<='2012-04-03');
不是个好主意。一般规则是尝试坚持等于左侧的字段(列)名称。所以
SELECT .... WHERE l_f_date <=#2012-04-03#
Nulls不会被包括在内,我希望你的日期是日期而不是字符串。
接下来添加表单:
SELECT .... WHERE l_f_date <= Forms!TheNameOfTheForm!TheNameOfTheTextbox
编辑评论
您正在使用查询设计窗口,是吗?请尝试此测试查询:
SELECT a.case_id, a.act_date
FROM actions_b AS a
WHERE a.act_date=Forms!Form!Text10
答案 1 :(得分:0)
好的,所以我决定在我的数据库中创建一个简单的2列表,用于存储昨天和今天的日期...我在表单中添加了2个文本框,1个按钮并添加了下一个程序按钮:
Private Sub Command25_Click()
CurrentDb.Execute "DELETE * FROM Datumi"
Dim tbl As Recordset
Set tbl = CurrentDb.OpenRecordset("Datumi")
tbl.AddNew
tbl!brojka = "1"
tbl!datum = Text8.Value
tbl.Update
tbl.AddNew
tbl!brojka = "2"
tbl!datum = Text10.Value
tbl.Update
End Sub
正如您所看到的,单击按钮将清除表并将新值存储为2行...第1行是昨天,第2行是今天...
然后我就从这个表中拉出值:
... where x.brojka=1 and format(a.act_date,'yyyy-mm-dd')=format(x.datum,'yyyy-mm-dd') ...
我确信它可以做得更好,但这个对我有用......
答案 2 :(得分:0)
我通过以下方法解决了这个问题: [软件:MS Access 2013]
CurrentDb.Execute "INSERT INTO [Inventory Transactions] ([Product ID], [Order ID])" _
& "VALUES ( " & Me.Product_ID & ", " & Me.Order_ID & ")"