美国日期格式在ms访问时卡在我身上

时间:2014-10-22 18:30:07

标签: sql-server forms vba date

我使用以下代码添加,编辑表格中的数据。一切正常,但有一个字段是日期格式。我在日期选择窗口中选择日期,但是当它将其导入表格时,会将日期格式从英国日期格式更改为美国。

例如,我在表单中的日期选取窗口中选择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

2 个答案:

答案 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总是使用美国日期格式,无论你设置了你的地区等等。