2016-09-06 3 views
0

Я пытаюсь упростить ввод пользователями кода. Трудно объяснить процесс, поэтому я показываю вам, что я имею в виду.VBA: Вставить по возрастанию Дата в таблице

Пользователь имеет только ввести следующие значения:

событий: event1От: 01.01.2017 Для: 01.04.2017Стоимость: 5000

Результат в таблице:

event1 01.01.2017 5000 
event1 01.02.2017 5000 
event1 01.03.2017 5000 
event1 01.04.2017 5000 

Я пробовал с этим кодом:

Private Sub Save_Click() 

Dim strSQL As String 
Dim Period As Date 

    For Period = "' & Me!FromDate & '" To "' & Me!ToDate & '" 

    strSQL = "INSERT INTO tblEvents (EventName, Date, Costs) VALUES ('" & Me!EventName& "' , '" & Date & "', '" & Me!Costs& "')" 
    CurrentDb.Execute strSQL 

    Next Date 

End Sub 
+0

Пожалуйста, помечать надлежащий RDBMS. MS Access? –

+0

Вы читали это: http://stackoverflow.com/questions/771861/insert-sql-command-with-datetime-in-ms-access? – Roland

ответ

1

Вы должны использовать следующие даты расчета функции:

  1. DateDiff() рассчитать количество месяцев между вашими 2 датами
  2. DateAdd() создать по дате добавления нескольких месяцев к другой дате

Edit: Добавление Infor для ввода данных

добавить 2 текстовых полей в форму, назовите их TextDtFrom и TextDtTo, и дать им этот формат shortdate так что вы увидите календарь появится, чтобы забрать даты легко.


Добавить кнопку с этим событием нажатия:

Private Sub TheButton_Click() 


    Dim strSQL As String 
    Dim dtFrom As Date 
    Dim dtTo As Date 
    Dim dtCurrent As Date 
    Dim intMonths As Integer 
    Dim i As Integer 

    'dtFrom = DateSerial(2017, 1, 1) 
    'dtTo = DateSerial(2017, 4, 1) 

    dtFrom = TextDtFrom.Value 
    dtTo = TextDtTo.Value 

    ' Calculate the number of months between the 2 dates 
    intMonths = DateDiff("m", dtFrom, dtTo) 

    ' Looping on the number of months 
    For i = 0 To intMonths 

     ' Computing Datefrom + month 
     dtCurrent = DateAdd("m", i, dtFrom) 

     strSQL = "INSERT INTO tblEvents (EventName, Date, Costs) VALUES ('" & Me!EventName & "' , '" & Format(dtCurrent, "DD.MM.YYYY") & "', '" & Me!Costs & "')" 

     CurrentDb.Execute strSQL 

    Next i 


End Sub 
+0

Я попытался найти решение, в котором можно определить DateFrom/DateTo с помощью Text- или Comboboxes. Знаете ли вы о возможном решении? – Flow74

+0

Да, но сначала вы должны рассказать нам больше о используемой технологии. VBA недостаточно. Это MS ACcess или другой продукт Office? –

+0

Жаль, что это доступ MS. Я думаю, мне нужен способ подключения двух Comboboxes к For Loop. Для Date = "'& Combobox1 &'" To "'& Combobox2 &'" ... Следующая дата – Flow74

Смежные вопросы