2015-10-04 44 views
0

我在窗体上使用DatePicker和textfield来选择日期,默认情况下它会在文本字段中显示为dd/mm/yyyy。因此,当我编写我的代码时,我使用这种格式来保持一致。但是当我保存一个像03/10/2015(这是十月的第三天)的日期时,它将被保存为3月10日。鉴于下面的代码,我需要改变什么才能正确保存到数据库?将日期和月份保存到数据库时反转

Private Sub cmdSave_Click() 
    ... 
    Dim StartDate As String 
    Dim EndDate As String 
    Dim SDate As Date 
    Dim EDate As Date 
    ... 
    StartDate = Me.txtStartDate.Value & " " & Me.txtStartTime.Value 
    EndDate = Me.txtEndDate.Value & " " & Me.txtEndTime.Value 
    SDate = CDate(Format(StartDate, "dd\/mm\/yyyy hh:mm")) 
    EDate = CDate(Format(EndDate, "dd\/mm\/yyyy hh:mm")) 

    If Me.txtOtherDetails.Value = "" Then 
    query1 = "INSERT INTO Shifts (Schedule_ID,Start_Date_Time,End_Date_Time,Location)" & _ 
    " VALUES (" & ScheduleID & ",#" & SDate & "#,#" & EDate & "#," & LocationID & ")" 
    Else 
    query1 = "INSERT INTO Shifts (Schedule_ID,Start_Date_Time,End_Date_Time,Location,Other_Details)" & _ 
    " VALUES (" & ScheduleID & ",#" & SDate & "#,#" & EDate & "#," & LocationID & ",'" & Me.txtOtherDetails.Value & "')" 
    End If 

    'Debug.Print query1 
    ShiftID = ExecuteInsert(query1) 
End Sub 

回答

1

你应该在查询日期的格式更改为mm/dd/yyyy,因为这是在MS Access查询使用的format。 所以你应该改变:

SDate = CDate(Format(StartDate, "mm\/dd\/yyyy hh:mm")) 
EDate = CDate(Format(EndDate, "mm\/dd\/yyyy hh:mm")) 
+0

你的建议的工作。谢谢。 – Alan

1

这已经完全混淆了。

如果你的文本框已经被应用的日期/时间格式,他们将举行日期值有效的日期表达式,而这些必须进行格式化,以有效字符串表达式与SQL代码来串联。

此外,串联的日期/时间值与SQL将使用默认的Windows设置,这将在美国以外的环境中失败的1号的日期最初迫使值的强制转换为字符串12。

因此,这是所有你需要:

Private Sub cmdSave_Click() 
    ... 
    Dim StartDate As String 
    Dim EndDate As String 
    ... 
    StartDate = Format(Me!txtStartDate.Value & " " & Me!txtStartTime.Value, "yyyy\/mm\/dd hh\:nn") 
    EndDate = Format(Me!txtEndDate.Value & " " & Me!txtEndTime.Value, "yyyy\/mm\/dd hh\:nn") 

    If Me!txtOtherDetails.Value = "" Then 
    query1 = "INSERT INTO Shifts (Schedule_ID,Start_Date_Time,End_Date_Time,Location)" & _ 
    " VALUES (" & ScheduleID & ",#" & StartDate & "#,#" & EndDate & "#," & LocationID & ")" 
    Else 
    query1 = "INSERT INTO Shifts (Schedule_ID,Start_Date_Time,End_Date_Time,Location,Other_Details)" & _ 
    " VALUES (" & ScheduleID & ",#" & StartDate & "#,#" & EndDate & "#," & LocationID & ",'" & Me!txtOtherDetails.Value & "')" 
    End If 

    'Debug.Print query1 
    ShiftID = ExecuteInsert(query1) 
End Sub 
相关问题