在Access窗体上将SQL时间字段显示为Access medium time hh:mm am / pm

时间:2013-11-25 17:41:18

标签: sql time sql-server-2008-r2 ms-access-2010

我正在使用链接到SQL Server 2008 R2的Access 2010。我的问题 - 如何在{1}}上以hh:mm am/pm而不是SQL Server的时间(7)格式显示Access表单上的时间?

为了使事情复杂化,我确实有一个查找表,所有时间都在半小时的时间范围内?防爆。在SQL中,查找字段显示为07:30:00.0000000 - 我想从我的访问表单中的下拉菜单中选择一个时间,上午7:30,然后在访问表单上显示为上午7:30。如果我选择它,我希望它以hh:mm:ss.nnnnnnn的形式存储在SQL Server中(因为我别无选择)。

我找不到任何相关内容。

2 个答案:

答案 0 :(得分:2)

Access没有Time数据类型,因此当它链接到SQL Server time列时,它会将该列映射为Text。这就是为什么您尝试应用于链接表值的任何Date/Time格式说明符都没有效果:就Access而言,它是一个字符串。

因此,如果我们有一个SQL Server表[约会]:

sqlTable.png

我们在Access中创建了一个链接表

accessTable.png

如果我们为该链接表创建一个Access表单并使用普通的旧绑定控件,我们就会得到这个

form1.png

[apptStart]的文本框确实有效,但看起来不太好。解决方法是将该文本框保留在表单上,​​但将其隐藏(将其.Visible属性设置为No),然后将另一个未绑定的文本框添加到表单中。 (在这种情况下,我称之为[txtStartTime]。)将新文本框的.Format设置为Medium Time,并根据需要调整任何其他格式(例如,我将Text Align设置为{{ 1}})。

Left表单事件中,计算与SQL Server表中的开始时间对应的Access On Current值,并将该值填入[txtStartTime]文本框。现在我们得到的东西看起来好一点:

form2.png

现在,如果用户想要编辑该值,该怎么办?在[txtStartTime]文本框的Date/time事件中,我们创建相应的SQL Server After Update字符串,并将该值填入(不可见,绑定)[apptStart]文本框中。保存记录时,新的时间值将在SQL Server表中更新。

表单背后的代码如下:

time

答案 1 :(得分:0)

抱歉,我没有开发环境设置,但您可以将SQL查询更改为:

SELECT Convert(varchar(5), getdate(), 108) 

给予HH:MM并截断其余部分,以便正确显示。

然后,你可以在回来的路上投下日期。