【发布时间】:2014-12-18 07:44:39
【问题描述】:
我使用以下代码添加、编辑表格中的数据。一切正常,但有一个字段是日期格式。我在带有日期选择窗口的表单中选择日期,但是当它导入表格时,它会将日期格式从英国日期格式更改为美国。
例如,我在表单的日期提取窗口中选择 01/11/2014 (1-nov-2014),当我将记录添加到表中时,(我也可以在子表单中看到)它显示 @987654322 @(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
【问题讨论】:
-
停止将您的 SQL 连接为字符串,并使用参数化查询。然后你可以只为参数分配一个 DateTime 并让数据库正确格式化它,而不是处理这种转换问题。它还避免了 SQL 注入。如果您搜索它们,这里有几十个帖子处理参数化查询。
标签: sql-server forms vba date