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

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

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

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

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

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

textual
Листинг программы
  1. Option Explicit
  2.  
  3. Const adOpenStatic = 3
  4. Const adLockOptimistic = 3
  5.  
  6. Dim strDatabase
  7. Dim lngID
  8.  
  9. Dim objFSO
  10. Dim objConnection
  11. Dim objRecordset
  12.  
  13. Dim dtStartDate
  14. Dim dtEndDate
  15. Dim lngCount
  16.  
  17. Dim prevLocale
  18.  
  19. '### for debug
  20. dim s, k
  21.  
  22.  
  23. If WScript.Arguments.Count = 2 Then
  24. strDatabase = Mid(WScript.Arguments(0), 2)
  25. lngID = Mid(WScript.Arguments(1), 2)
  26. Set objFSO = CreateObject("Scripting.FileSystemObject")
  27. If objFSO.FileExists(strDatabase) Then
  28. prevLocale = SetLocale("en-us")
  29. Set objConnection = CreateObject("ADODB.Connection")
  30. Set objRecordset = CreateObject("ADODB.Recordset")
  31. objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& strDatabase &";"
  32. With objRecordset
  33. .Open "SELECT * FROM qdfOrders WHERE ID = " & lngID & "", objConnection, adOpenStatic, adLockOptimistic
  34. dtStartDate = .Fields("OrderDate").Value
  35. lngCount = .Fields("Time").Value
  36. .Close
  37.  
  38. 'rem дата должна бы быть в формате m/d/yyyy
  39. wscript.echo "start date: "& dtStartDate & vbtab &"days to deadline: "& lngcount
  40. ' .Open _
  41. ' "SELECT * FROM tblHolidays"& _
  42. ' " WHERE HolidayDate BETWEEN #"& dtStartDate &"#"& _
  43. ' " AND #"& DateAdd("d", lngCount*2+1, dtStartDate) &"#", _
  44. ' objConnection, adOpenStatic, adLockOptimistic
  45.  
  46. s="SELECT * FROM tblHolidays"& _
  47. " WHERE HolidayDate BETWEEN #"& dtStartDate &"#"& _
  48. " AND #"& DateAdd("d", lngCount*2+1, dtStartDate) &"#"
  49.  
  50. 'rem в сторке запроса даты также должны бы быть в формате m/d/yyyy
  51. wscript.echo s
  52. .open s, objConnection, adOpenStatic, adLockOptimistic
  53.  
  54. dtEndDate = DateAdd("d", lngCount, dtStartDate)
  55.  
  56. wscript.echo "deadline zero approximation: "& dtEndDate
  57. .Filter = "HolidayDate>=#"& dtStartDate &"# AND HolidayDate<=#"& dtEndDate &"#"
  58. lngCount = .RecordCount
  59.  
  60. k=0
  61. Do While lngCount>0
  62. dtStartDate = DateAdd("d", 1, dtEndDate)
  63. dtEndDate = DateAdd("d", lngCount, dtEndDate)
  64. .Filter = "HolidayDate>=#"& dtStartDate &"# AND HolidayDate<=#"& dtEndDate &"#"
  65. lngCount = .RecordCount
  66. k=k+1
  67. wscript.echo "loop "& k
  68. Loop
  69. .Close
  70. End With
  71. 'objConnection.Execute "UPDATE qdfOrders SET DoneDate=#" & dtEndDate & "# WHERE ID=" & lngID
  72.  
  73. s = "UPDATE qdfOrders SET DoneDate=#" & dtEndDate & "# WHERE ID=" & lngID
  74. 'rem дата должна бы быть в формате m/d/yyyy
  75. wscript.echo s
  76. objConnection.Execute s
  77. objConnection.Close
  78. Set objRecordset = Nothing
  79. Set objConnection = Nothing
  80. SetLocale(prevLocale)
  81. Else
  82. WScript.Echo "Database file [" & strDatabase & "] not found"
  83. End If
  84. Set objFSO = Nothing
  85. Else
  86. WScript.Echo "Usage from toolbar on [Склад и торговля]:"
  87. WScript.Echo "" & WScript.ScriptName & " /[CurrentDB] /[ID]"
  88. End If
  89.  
  90. WScript.Quit 0

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут