2015-02-16 2 views
0

Я пытаюсь обновить поле даты в таблице до текущей даты, когда кнопка нажата на форму, и данное поле пуст. Однако, когда поле обновляется, выход - это время 12:00:05, а не дата вообще. Когда используется год (дата), выход 7/7/1905. Я не уверен, почему эти ценности являются моими результатами. Вот мой код:Функция даты в доступе vba время вывода

Dim ctl As Control 
Set ctl = [Forms]![frm1]![subfrm1].[Form]![CloseDate] 

If IsNull(ctl) Then 
DoCmd.SetWarnings False 
DoCmd.RunSQL "Update tbl1 SET [CloseItem] = ""YES"" WHERE [ID] = " & [Forms]![frm1]![ID].Value & " AND [Item#] = " & [Forms]![frm1]![subfrm1].[Form]![ItemID].Value 

DoCmd.RunSQL "Update tbl1 SET [CloseDate] = " & Date & " WHERE [ID] = " & [Forms]![frm1]![ID].Value & " AND [ItemID] = " & [Forms]![frm1]![subfrm1].[Form]![ItemID].Value 

' Output is 12:00:05 

' OR DoCmd.RunSQL "Update tbl1 SET [CloseDate] = " & Year(Date) & " WHERE [ID] = " & [Forms]![frm1]![ID].Value & " AND [ItemID] = " & [Forms]![frm1]![subfrm1].[Form]![ItemID].Value 
DoCmd.RefreshRecord 

' Output is 7/7/1905 

End If 

Как я могу получить его для вывода правильной даты?

ответ

1

Осмотрите строку, которую строит код для этого сегмента инструкции UPDATE. (Это пример скопирован из окна Access Immediate. Вы можете пойти туда с Ctrl + г)

? "Update tbl1 SET [CloseDate] = " & Date & " WHERE [ID] = " 
Update tbl1 SET [CloseDate] = 2/16/2015 WHERE [ID] = 

ДБ двигатель не видит 2/16/2015 как дата/Значение времени. Вместо этого он рассматривает, что в 2 делится на 16, деленное на 2015 и полученное число, когда выражается как дата валютирования/время, дает вам это ...

? Format(2/16/2015, "yyyy-m-d hh:nn:ss") 
1899-12-30 00:00:05 

Вы можете сигнализировать дб двигатель, который 2/16/2015 является датой валютирования/времени, заключая его в # разделителей, как это: #2/16/2015#

Однако, поскольку дб двигатель понимает функцию Date(), вы можете использовать это имя функции непосредственно в вашем UPDATE заявлении и не беспокоить о конкатенации в значении с правильными разделителями.

Dim strUpdate As String 
strUpdate = "Update tbl1 SET [CloseDate] = Date() WHERE [ID] = " & _ 
    [Forms]![frm1]![ID].Value & " AND [ItemID] = " & _ 
    [Forms]![frm1]![subfrm1].[Form]![ItemID].Value 
Debug.Print strUpdate 
CurrentDb.Execute strUpdate, dbFailOnError 
+0

Спасибо! Удаление разделителей – ibtquestion