Дата по умолчанию в datetimepicker в визуальной студии - PullRequest
0 голосов
/ 24 июня 2019

Если пользователь выбирает дату в DateTimePicker, он выбирает только дату, что мне и нужно. Однако, если пользователь не выбирает какую-либо дату и оставляет DateTimePicker как сегодняшнюю дату, он показывает дату + время. Данные хранятся в базе данных Access. Я хочу сохранить дату только в хранилище Access, когда пользователь оставляет DateTimePicker на сегодняшнюю дату (без изменения какой-либо даты).

Me.DateTimePicker1.CustomFormat = "dd-MM-yyyy"
Me.DateTimePicker1.DataBindings.Add(New System.Windows.Forms.Binding("Value", Me.OrderdetailsBindingSource, "OrderDate", True))
Me.DateTimePicker1.DataBindings.Add(New System.Windows.Forms.Binding("Text", Me.OrderdetailsBindingSource, "OrderDate", True))
Me.DateTimePicker1.Font = New System.Drawing.Font("Tahoma", 10.2!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.DateTimePicker1.Format = System.Windows.Forms.DateTimePickerFormat.Custom
Me.DateTimePicker1.Location = New System.Drawing.Point(158, 39)
Me.DateTimePicker1.Name = "DateTimePicker1"
Me.DateTimePicker1.Size = New System.Drawing.Size(294, 28)
Me.DateTimePicker1.TabIndex = 2
Me.DateTimePicker1.Value = New Date(2019, 6, 18, 0, 0, 0, 0)

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

Извините, если я не смогу ответить вам идеально в vb.net, я дам вам ответ в vb (как я понимаю, это правильно) и в правильном c #

я понял, что вы хотитекод для сохранения значений в базе данных, если дата DateTimePicker установлена ​​сегодня.

c #

if(dateTimePicker1.Value.Date == DateTime.Today)
{
    //insert your code here
}

vb.net

if dateTimePicker1.Value.Date == DateTime.Today
//Code here
end if

это если спросит,если дата пикета DateTime совпадает с датой сегодняшнего дня

, если вы просто хотите сохранить все значение даты в базе данных, если выбранная дата соответствует сегодняшнему дню, например: "25.06.2019 17:25"тогда у вас возникнет проблема.

Если вы сохраните его как строку, вы можете отформатировать его:

dateTimePicker1.Value.ToString("HH:mm dd.MM.yyyy")

или

dateTimePicker1.Value.ToString("HH:mm")

, поэтому поместите второй в"else" braket.

если вам нужны только дата или время, вы можете отформатировать их, как указано выше.

(извините, я не уверен, правильно ли я понял ваш вопрос, так что если это не такне помогу, просто прокомментирую. Я отвечу)

0 голосов
/ 25 июня 2019

Access не имеет краткого формата даты, такого как SQL Server.См. эту ссылку для списков типов данных.

Доступ:

  • Дата / Время, Использование для дат и времени, 8 байтов

SQL Server:

  • datetime, с 1 января 1753 по 31 декабря 9999 с точностью 3,33миллисекунды, 8 байтов
  • дата, хранить только дату.С 1 января 0001 года по 31 декабря 9999 года 3 байта

Таким образом, в Access есть только один тип даты / времени, который должен иметь возможность сохранять время с тем же номером.байтов как дата-время SQL Server.Дата без отметки времени, которую вы видите, на самом деле 12 часов утра.Это то, что вы делаете, когда устанавливаете дату / время на свой DateTimePicker Me.DateTimePicker1.Value = New Date(2019, 6, 18, 0, 0, 0, 0).Это, кстати, ваше лучшее решение - установить DateTimePicker на сегодняшнюю дату (только часть даты с использованием свойства DateTime.Date, которое я упомянул).

Чтобы решить вашу проблему, сделайте это в Form_Load:

Me.DateTimePicker1.Value = Now.Date ' this makes it today at 12 AM

Если вы хотите лучше понять, что происходит, проверьте значение вашего DateTimePicker в любомвремя с этим, чтобы увидеть, что всегда есть время, даже если это 12:00:

MessageBox.Show($"{DateTimePicker1.Value:yyyy-MM-dd HH:mm:ss}")

И выполните этот запрос в вашей базе данных, чтобы увидеть, что в Access также всегда есть время Date/Time поле, и этот доступ автоматически скрывает время, когда это 12:00:

select 
orderdate
, format(orderdate, 'General Date') as GeneralDate
, format(orderdate, 'Short Time') as ShortTime
, format(orderdate, 'Medium Time') as MediumTime
, format(orderdate, 'Long Time') as LongTime
, format(orderdate, 'Short Date') as ShortDate
, format(orderdate, 'Medium Date') as MediumDate
, format(orderdate, 'Long Date') as LongDate
from orderdetails
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...