【问题标题】:Retrieve data using form from Dates使用日期中的表单检索数据
【发布时间】:2016-10-12 12:49:41
【问题描述】:

我在 Access 中有一个名为“Laufzettel”的查询,它看起来是这样的。日期为 dd.mm.yyyy 格式

Antragsnummer   Eingang    esigniert    Ausgang     Anlage    Policierung

   111         2.10.2016   2.10.2016   3.10.2016                3.10.2016

   222         3.10.2016   3.10.2016   3.10.2016    4.10.2016

   333         5.10.2016   6.10.2016   7.10.2016                 7.10.2016

我正在创建一个名为“overview”的表单,其中包含两个名为 StartDateEndDate 的文本框以及搜索按钮。我需要的是,当我通过给出两个日期单击搜索按钮时,它应该从上述查询中检索相关记录以及报告形式的所有字段。

StartDateEndDate 与查询的 Eingang 字段相关。所以当我输入 2.10.2016 作为 StartDate 和 5.10.2016 作为 EndDate 时,它​​必须产生上述查询。为了实现这一点,我已经开始使用表单字段创建一个查询,当我单击搜索按钮时,它反过来可以为我生成所需的报告。所以我正在尝试使用代码

SELECT Laufzettel.ANTRAGSNUMMER,       Laufzettel.Eingang, Laufzettel.esigniert, Laufzettel.Ausgang, Laufzettel.Anlage, Laufzettel.Policierung
FROM Laufzettel
 WHERE Lauzettel.Eingang BETWEEN [Forms]![overview]![StartDate] and  [Forms]![overview]![EndDate];

为此我收到错误Access 无法将 [Forms]![overview]![StartDate] 和 [Forms]![overview]![EndDate] 识别为有效的字段名称或表达式

我怎样才能实现上述目标?有人可以帮我吗?

编辑:这是我现在的工作查询。虽然它没有给我 EndDate 值的记录。

PARAMETERS [Forms]![overview]![start] DateTime, [Forms]![overview]![end]  DateTime;
 SELECT Laufzettel.ANTRAGSNUMMER,     Laufzettel.AEingangDatenstromZWorkflow, Laufzettel.BEingangesigniertDokumentZWorkflow, Laufzettel.CAusgangDatenstromZWorkflow, Laufzettel.DAnlageSchwebeVSL,  Laufzettel.EPolicierungVSL
   FROM Laufzettel
   WHERE (((Laufzettel.AEingangDatenstromZWorkflow) Between [Forms]! [overview]![start] And [Forms]![overview]![end]));

谁能告诉我哪里错了?

【问题讨论】:

  • 你有一个 ;在从 laufzettel 之后,这会过早地关闭 SQL 命令。还是错字?
  • 啊不,那是一个错字,但不是问题。
  • 你从哪里执行这个命令?发布您的点击程序
  • 对不起,我不明白你的意思?
  • 您能发布您的 Laufzettel 查询的代码吗?这将有助于诊断。

标签: sql ms-access vba


【解决方案1】:

如果内置代码 (VBA),请尝试:

SQL = "SELECT Laufzettel.ANTRAGSNUMMER, Laufzettel.Eingang, Laufzettel.esigniert, Laufzettel.Ausgang, Laufzettel.Anlage, Laufzettel.Policierung " & _
"FROM Laufzettel " & _
"WHERE Lauzettel.Eingang BETWEEN #" & Format([Forms]![overview]![StartDate], "yyyy\/mm\/dd") & "# AND #" & Format([Forms]![overview]![EndDate], "yyyy\/mm\/dd") & "#"

如果“日期”字段确实是文本,则应用 DateValue

SQL = "SELECT Laufzettel.ANTRAGSNUMMER, Laufzettel.Eingang, Laufzettel.esigniert, Laufzettel.Ausgang, Laufzettel.Anlage, Laufzettel.Policierung " & _
"FROM Laufzettel " & _
"WHERE DateValue(Lauzettel.Eingang) BETWEEN #" & Format([Forms]![overview]![StartDate], "yyyy\/mm\/dd") & "# AND #" & Format([Forms]![overview]![EndDate], "yyyy\/mm\/dd") & "#"

【讨论】:

  • 没有。该格式仅用于显示。当然,假设日期字段的数据类型为 Date,它们必须是。
  • @krishKM:或者,如果字段是文本,则应用 DateValue,它将本地化​​文本格式转换为日期值。 Se 编辑。
  • @Gustav 我收到运行时错误“438”当我尝试通过将代码链接到搜索按钮来执行您的代码时,对象不支持此属性或方法
猜你喜欢
  • 2021-01-31
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 2020-10-31
  • 1970-01-01
  • 1970-01-01
  • 2013-09-12
相关资源
最近更新 更多