1

作为 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 和访问查询的新手……我用谷歌搜索,但有时,就像这次一样,我被卡住了。
谢谢

4

3 回答 3

1

这种结构:

SELECT .... WHERE format(NZ(l_f_date),'yyyy-mm-dd')<='2012-04-03');

不是一个好主意。一般规则是尽量坚持等号左侧的字段(列)名称。所以

SELECT .... WHERE l_f_date <=#2012-04-03#

不包含空值,我希望您的日期日期而不是字符串。

接下来添加表格:

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
于 2012-04-04T09:33:58.990 回答
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') ...

我敢肯定它可以做得更好,但这对我有用......

于 2012-04-10T12:36:38.077 回答
0

我解决了这个问题:[软件:MS Access 2013]

CurrentDb.Execute "INSERT INTO [Inventory Transactions] ([Product ID], [Order ID])" _
& "VALUES ( " & Me.Product_ID & ", " & Me.Order_ID & ")"
于 2020-08-20T17:01:23.967 回答