【问题标题】:how to address datetime fields from SQL backend in Access front end?如何在 Access 前端处理来自 SQL 后端的日期时间字段?
【发布时间】:2017-04-24 08:50:14
【问题描述】:

我已使用 SSMA 将我的访问后端迁移到 SQL Server 2014。我已更新我的所有表单、查询和报告以使用 SQL。我从一开始就知道日期时间在所有表单中都显示错误(我的用户只希望存储日期,而不是日期和时间),我认为我以后可以很容易地从 Access FE 解决这个问题.

现在我已经到了项目的尾声,我还没有找到一种简单的方法来将表单和报告中的字段转换为只显示日期而不是日期和时间,因为它存储在 SQL 中.

我尝试过的一件事是修改视图以转换日期,至少有一些基于 SQL 视图(我可以作为链接表访问)的报告。 convert(varchar,StartDate,101) as StartDate

是否可以轻松地将 SQL 中的 DateTime (yyyy-mm-dd hh:mm:ss) 字段转换为仅显示为 Date (mm/dd/yyyy) 的访问权限?

【问题讨论】:

  • 你在视图中尝试cast(StartDate as date)了吗?
  • @Mat'sMug 他可能不想或不能更改 SQL 视图本身,在这种情况下,表单只需要一个格式化函数:format("2016-12-09 08:40:20", "yyyy-mm-dd")

标签: sql-server datetime ms-access vba


【解决方案1】:

您只需设置保存日期值的文本框的 Format 属性:

mm/dd/yyyy

或者只是Short Date,但是,它是本地化的。

当然,这仅适用于 SQL Server 中的数据类型是 DateTime,而不是 ODBC 驱动程序以文本形式返回的 DateTime2

【讨论】:

  • 谢谢你们的回复。我尝试了您的建议@Gustav,但似乎没有什么不同。在随机日期文本框的格式属性中,我尝试了“mm/dd/yyyy”以及“短日期”设置,它们都导致日期和时间仍然显示。事实上稍微糟糕一点,因为现在它似乎是正确的,所以只有时间是可见的,直到你选择左边(无法让 ctrl+i 工作来插入图像......)我正在使用带有“SQL Server”的 ODBC司机。
  • 我还觉得重要的是要注意,对于基于表格的表单,强制转换无济于事。我不想为每个显示日期的表单创建一个视图!
  • 如果“日期”不会格式化,它们是文本,这意味着您很可能已将 SQL Server 中的字段定义为 DateTime2 而不是 DateTime。您必须更正此问题或应用程序中的任何地方,您必须在日期和文本之间进行转换,反之亦然。不好玩。
  • 啊,杂种,好吧,我没有明确定义它们,我相信 SSMA 会这样做......我现在正在检查。
  • 当!你说得对!!!我什至没听懂,他们都是 DateTime2,NOO!!!!!!!!!!是时候低头了...感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-26
  • 1970-01-01
相关资源
最近更新 更多