Нужна помощь в создании VBS скрипта

Узнай цену своей работы

Формулировка задачи:

Здравствуйте господа !!!
Помогите пожалуйста с решением следующей задачи -
Есть код для вычисления даты выдачи заказа по количеству рабочих дней (см. под спойлером)

Что в нем не так ???
1.Нужно сделать чтобы количество рабочих дней (в данном случае 21) можно было менять в таблице Б/Д - qdfOrders поле "Time"
2.Расчет выходных дней надо сделать следующим образом :
а) Заполняем «tblHolidays» списком суббот, воскресений, известных праздников N-ного года.
б) Посему из алгоритма выкидываем проверку на субботы и воскресенья.
в) Выправление заполненного списка до реальности (перенос выходных дней с субботы и воскресенья на будние дни) оставляем на совести оператора.

Решение задачи: «Нужна помощь в создании VBS скрипта»

textual
Листинг программы
Option Explicit

Const adOpenStatic     = 3
Const adLockOptimistic = 3

Dim strDatabase
Dim lngID

Dim objFSO
Dim objConnection
Dim objRecordset

Dim dtStartDate
Dim dtEndDate
Dim lngCount

Dim prevLocale

'### for debug
dim s, k


If WScript.Arguments.Count = 2 Then
    strDatabase = Mid(WScript.Arguments(0), 2)
    lngID = Mid(WScript.Arguments(1), 2)
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    
    If objFSO.FileExists(strDatabase) Then
        prevLocale = SetLocale("en-us")
        Set objConnection = CreateObject("ADODB.Connection")
        Set objRecordset  = CreateObject("ADODB.Recordset")
        objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& strDatabase &";"
        
        With objRecordset
            .Open "SELECT * FROM qdfOrders WHERE ID = " & lngID & "", objConnection, adOpenStatic, adLockOptimistic
            dtStartDate = .Fields("OrderDate").Value
	    lngCount    = .Fields("Time").Value 
	    .Close

'rem дата должна бы быть в формате m/d/yyyy
wscript.echo "start date: "& dtStartDate & vbtab &"days to deadline:  "& lngcount
			
'            .Open _
'                "SELECT * FROM tblHolidays"& _
'                " WHERE HolidayDate BETWEEN #"& dtStartDate &"#"& _
'                " AND #"& DateAdd("d", lngCount*2+1, dtStartDate) &"#", _
'                objConnection, adOpenStatic, adLockOptimistic

s="SELECT * FROM tblHolidays"& _
" WHERE HolidayDate BETWEEN #"& dtStartDate &"#"& _
" AND #"& DateAdd("d", lngCount*2+1, dtStartDate) &"#"

'rem в сторке запроса даты также должны бы быть в формате m/d/yyyy
wscript.echo s
.open s, objConnection, adOpenStatic, adLockOptimistic

            
            dtEndDate = DateAdd("d", lngCount, dtStartDate)

wscript.echo "deadline zero approximation: "& dtEndDate
			
            .Filter  = "HolidayDate>=#"& dtStartDate &"# AND HolidayDate<=#"& dtEndDate &"#" 
            lngCount = .RecordCount

k=0            
            Do While lngCount>0
                dtStartDate = DateAdd("d", 1, dtEndDate)
                dtEndDate   = DateAdd("d", lngCount, dtEndDate)
                .Filter  = "HolidayDate>=#"& dtStartDate &"# AND HolidayDate<=#"& dtEndDate &"#"
                lngCount = .RecordCount
k=k+1
wscript.echo "loop "& k
            Loop
			
            .Close
        End With
        
        'objConnection.Execute "UPDATE qdfOrders SET DoneDate=#" & dtEndDate & "# WHERE ID=" & lngID

s = "UPDATE qdfOrders SET DoneDate=#" & dtEndDate & "# WHERE ID=" & lngID
'rem дата должна бы быть в формате m/d/yyyy
wscript.echo s
objConnection.Execute s
        
        objConnection.Close
        Set objRecordset  = Nothing
        Set objConnection = Nothing
        SetLocale(prevLocale)
    Else
        WScript.Echo "Database file [" & strDatabase & "] not found"
    End If
    
    Set objFSO = Nothing
Else
    WScript.Echo "Usage from toolbar on [Склад и торговля]:"
    WScript.Echo "" & WScript.ScriptName & " /[CurrentDB] /[ID]"
End If

WScript.Quit 0

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.571 из 5