我使用以下代码添加,编辑表格中的数据。一切正常,但有一个字段是日期格式。我在日期选择窗口中选择日期,但是当它将其导入表格时,会将日期格式从英国日期格式更改为美国。
例如,我在表单中的日期选取窗口中选择01/11/2014
(1-nov-2014),当我将记录添加到表格中时,(我在子表单中也可以看到)它显示11/01/2014
(2014年1月11日)。当我使用相同的表单编辑同一记录时,它仍会显示11/01/2014
。所以基本上它改变了日期和月份。
我试图像29/11/2014
一样,然后它没有交换日期和月份。我已经检查了控制面板中的区域设置,它显示UK
,我已尝试在子表单中制作格式,我将mm-dd-yyyy
格式添加到sql中,但不是帮助
我知道怎么设置这个?
感谢您的帮助
Option Compare Database
Private Sub cmdAdd_Click()
If Me.txtName.Tag & "" = "" Then
CurrentDb.Execute "INSERT INTO [import]([product name], [QtyImport], [ImportDate])" & _
" VALUES('" & Me.txtName & "'," & Me.txtOrderedQty & ",#" & Me.txtDate & "#)"
Else
CurrentDb.Execute "UPDATE import " & _
" SET [product name] = '" & Me.txtName & "'" & _
", [QtyImport] = " & Me.txtOrderedQty & "" & _
", [ImportDate] = #" & Me.txtDate & "#" & _
" WHERE [product name] = '" & Me.txtName.Tag & "'"
End If
cmdClear_Click
importSubform.Form.Requery
End Sub
Private Sub cmdClear_Click()
Me.txtName = ""
Me.txtOrderedQty = ""
Me.txtDate = ""
Me.txtName.SetFocus
Me.CmdEdit.Enabled = True
Me.CmdAdd.Caption = "Add"
Me.txtName.Tag = ""
End Sub
Private Sub CmdEdit_Click()
If Not (Me.importSubform.Form.Recordset.EOF And Me.importSubform.Form.Recordset.BOF) Then
With Me.importSubform.Form.Recordset
Me.txtName = .Fields("product name")
Me.txtOrderedQty = .Fields("QtyImport")
Me.txtDate = .Fields("ImportDate")
Me.txtName.Tag = .Fields("Product Name")
Me.CmdAdd.Caption = "Update"
Me.CmdEdit.Enabled = False
End With
End If
End Sub
Private Sub cmdExit_Click()
DoCmd.Close
End Sub
答案 0 :(得分:1)
首先将输入的日期值解析为datetime对象,然后将其值传递给DB。 虽然再次绑定从数据库中的值获取datetime对象,然后解析它以获得' dd-mm-yy'格式。
或者,您也可以使用convert方法从输入日期值中获取日期对象,该日期值位于' dd-mm-yy'格式即。
convert(date, @inputed, 103)
它将给出日期对象,其中@inputed是您输入的日期值。
然后将其存储在数据库中,并在再次显示时将其转换回< dd-mm-yy'格式使用以下函数。
convert(varchar, @savedDate, 103)
此行将按如下方式修改:
CurrentDb.Execute "INSERT INTO [import]([product name], [QtyImport], [ImportDate])" & _
" VALUES('" & Me.txtName & "'," & Me.txtOrderedQty & ",convert(date, '" & Me.txtDate & "',103)"
我希望上面的这一行是正确的,如果错误,我在C#中工作正确。
答案 1 :(得分:1)
好的,最后我发现了如何在VBA中格式化日期。我已将cmd中的“值”行更改为单击以下内容:
" VALUES('" & Me.txtName & "'," & Me.txtOrderedQty & ",#" & Format(Me.txtDate, "mm/dd/yyyy") & "#)"
所以这是代码实际上用于保存所有英国日期格式的代码,bcs我在某处读到VBA总是使用美国日期格式,无论你设置了你的地区等等。