#vb.net #ms-access #timer
#vb.net #ms-access #таймер
Вопрос:
Я хотел бы обновить базу данных Access в определенное время.
Например:
У меня есть startdatetime = 08.11.2011 8:00 утра.
Я хочу обновить базу данных, когда DateTime.Now = Startdatetime.AddMinutes(30)
Как мне это сделать в Vb.net ?
Я думал об использовании таймера, но я не уверен, как обновлять базу данных, когда таймер останавливается.
Примечание: Это утверждение будет находиться в цикле, потому что я буду обновлять, например For i = 1 to n
Любая помощь будет оценена
Спасибо.
Комментарии:
1. Извините, но я новичок в программировании, что такое backgroundworker?
Ответ №1:
«Я думал об использовании таймера, но я не уверен, как обновить базу данных, когда таймер останавливается».
Когда таймер истекает, вы хотите предпринять некоторые действия. Это фундаментальная причина, по которой существуют таймеры. Таймеры обычно запускают событие или вызывают делегата по истечении времени. Вы настраиваете таймер таким образом, чтобы его событие или делегат обновляли базу данных, или вызываете метод, который это делает. Прочитайте документацию для вашего предпочтительного таймера, чтобы узнать подробности.
Пример таймера на основе событий:http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx
Пример таймера на основе делегирования:http://msdn.microsoft.com/en-us/library/system.threading.timer.aspx
Комментарии:
1. Спасибо, я проверю документацию.
Ответ №2:
Если вы уже находитесь в цикле, это довольно просто:
Dim dtLastUpdated As DateTime = DateTime.Now
For i = 1 To n
' Test the
If DateTime.Now.Subtract(dtLastUpdated).TotalMinutes >= 30 Then
' Record the new time
dtLastUpdated = Date.Now
' Update your database
End If
Next
Комментарии:
1. Спасибо, но у меня есть вопрос по изменению вашего кода. Если DateTime.Now.Subtract(dtLastUpdated). Общее количество минут < 30, я хочу, чтобы оно подождало = 30 перед обновлением базы данных. Как мне это сделать? (Больше похоже на то, что когда придет время, сделайте что-нибудь)
2. Просто для ясности, вы не хотите делать что-либо еще в цикле, пока не пройдет 30 минут?
3. Хорошо, позвольте мне объяснить лучше. У меня есть цикл, который получает все строки в базе данных. И каждая строка имеет начальную дату. итак, я хочу обновить другую базу данных, когда timenow >= StartDate. Добавьте минуты (30) для каждой начальной даты в строке.
4. Ах, теперь я понимаю. Вам нужно получить StartDate из строки базы данных в качестве DateTime, затем выполнить свой тест. Например, если DateTime.Now.Subtract(начальная дата). TotalMinutes() > = 30 Затем обновите базу данных.