Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Заполнение таблицы через модуль


Автор: ivan04 8.9.2012, 19:19
Здравствуйте.
имеется следующий код
Код

Private Sub btnED_Click()

   On Error GoTo btnED_Click_Error

If Not IsDate(Me.DataBP) Then
    Call MsgBox("В поле ""Начало работы"" введены неправильные данные.", vbCritical, "Ошибка в данных")
    Exit Sub
End If

If Not IsNumeric(Me.DataP) Then
    Call MsgBox("В поле ""Срок (в днях)"" введены неправильные данные.", vbCritical, "Ошибка в данных")
    Exit Sub
End If

If Me.DataP <= 0 Then
    Call MsgBox("В поле ""Срок (в днях)"" введено значение <= 0.", vbCritical, "Ошибка в данных")
    Exit Sub
End If
    
Dim strsql As String
Dim rst As ADODB.Recordset



strsql = "SELECT TOP " & Me.DataP & " qryCurDay.tYear, qryCurDay.tMonth, qryCurDay.tDay, " _
        & "qryCurDay.NumDay, qryCurDay.tWeekDay, qryCurDay.NewDay, qryCurDay.FD, " _
        & "qryCurDay.CurDay " _
        & "FROM qryCurDay " _
        & "WHERE ((dateserial((qryCurDay.tYear),(qryCurDay.tMonth),(qryCurDay.tDay))>=" _
        & "dateserial(" & Year(Me.DataBP) & "," & Month(Me.DataBP) & "," & Day(Me.DataBP) & ")) " _
        & "AND ((qryCurDay.CurDay)<>0));"

Set rst = New ADODB.Recordset
rst.Open strsql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
If rst.RecordCount = 0 Then
    rst.Close
    Set rst = Nothing
    Call MsgBox("Расчет даты окончания работы невозможен." _
                & vbCrLf & "Возможно у Вас не задан график рабочих дней на расчитываемый период." _
                & vbCrLf & "Чтобы задать его нажмите на кнопку 'Переносы, новые рабочие и выходные дни' . В открывшейся форме нажмите на стрелку со звездочкой и введите нужный год. График будет создан." _
                , vbCritical, "Расчет даты окончания работы")
    Exit Sub
ElseIf rst.RecordCount < Me.DataP Then
    rst.Close
    Set rst = Nothing
    Call MsgBox("Расчет даты окончания работы невозможен." _
                & vbCrLf & "Возможно у Вас переход на другой год и для него не задан график рабочих дней на расчитываемый период." _
                & vbCrLf & "Чтобы задать его нажмите на кнопку 'Переносы, новые рабочие и выходные дни' . В открывшейся форме нажмите на стрелку со звездочкой и введите нужный год. График будет создан." _
                , vbCritical, "Расчет даты окончания работы")
    Exit Sub
End If
rst.MoveLast

Me.DataEP.SetFocus
Me.DataEP.Text = rst.Fields("tDay") & "." & rst.Fields("tMonth") & "." & rst.Fields("tYear")

rst.Close

Set rst = Nothing

Me.btnED.SetFocus

   On Error GoTo 0
   Exit Sub

btnED_Click_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure btnED_Click of VBA Document Form_frmDataEnd"
End Sub
этот код добавляет N количество рабочих дней к имеющейся дате
но все это происходит в форме.
У меня задача сводиться к заполнению поля таблицы, на основании имеющегося с датой, с прибавлением определенного количества рабочих дней
код учитывает праздники и выходные.
заранее спасибо

Автор: bopoha 8.9.2012, 22:06
И в чем проблема?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)