我正在使用链接到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中(因为我别无选择)。
我找不到任何相关内容。
答案 0 :(得分:2)
Access没有Time
数据类型,因此当它链接到SQL Server time
列时,它会将该列映射为Text
。这就是为什么您尝试应用于链接表值的任何Date/Time
格式说明符都没有效果:就Access而言,它是一个字符串。
因此,如果我们有一个SQL Server表[约会]:
我们在Access中创建了一个链接表
如果我们为该链接表创建一个Access表单并使用普通的旧绑定控件,我们就会得到这个
[apptStart]的文本框确实有效,但看起来不太好。解决方法是将该文本框保留在表单上,但将其隐藏(将其.Visible
属性设置为No
),然后将另一个未绑定的文本框添加到表单中。 (在这种情况下,我称之为[txtStartTime]。)将新文本框的.Format
设置为Medium Time
,并根据需要调整任何其他格式(例如,我将Text Align
设置为{{ 1}})。
在Left
表单事件中,计算与SQL Server表中的开始时间对应的Access On Current
值,并将该值填入[txtStartTime]文本框。现在我们得到的东西看起来好一点:
现在,如果用户想要编辑该值,该怎么办?在[txtStartTime]文本框的Date/time
事件中,我们创建相应的SQL Server After Update
字符串,并将该值填入(不可见,绑定)[apptStart]文本框中。保存记录时,新的时间值将在SQL Server表中更新。
表单背后的代码如下:
time
答案 1 :(得分:0)
抱歉,我没有开发环境设置,但您可以将SQL查询更改为:
SELECT Convert(varchar(5), getdate(), 108)
给予HH:MM并截断其余部分,以便正确显示。
然后,你可以在回来的路上投下日期。