Скрипт не подключается к Access
Скрипт на vbs подкючается локально к Access и выбирает определенную информацию. Куда же легче. Не тут-то было.
При подключении к базе, появляется диалоговое окна куда необходимо ввести логин и пароль для подключения.
Долго бился, решения не нашел, решил придумать костыль. скрипт обертка запускает первоначальный скрипт, после чего ожидает появления окна подключения и с помощью senkey передает в форму данные.
Вроде бы работало, но при запуске через таск шедулер, не работало. понял почему,
Создал виндовс сервис, который запускал сей скрипт с доступом к рабочему столу. но связка по каким-то причинам не заработала.
Может кто подскажет, как избежать ошибки аутентификации?
Или может быть подскажет как починить костыль что бы работал в шедулере?
Заранее благодарен, очень сильно!
Код:
Set sh = WScript.CreateObject("WScript.Shell")
sh.Run "cmd /K cscript C:\access.vbs"
WScript.Sleep 5000
sh.AppActivate "Connect to xxx"
WScript.Sleep 80
sh.SendKeys "pass"
WScript.Sleep 800
sh.SendKeys("{Enter}")
sh.Run "cmd /K cscript C:\access.vbs"
WScript.Sleep 5000
sh.AppActivate "Connect to xxx"
WScript.Sleep 80
sh.SendKeys "pass"
WScript.Sleep 800
sh.SendKeys("{Enter}")
Код:
Set sh = WScript.CreateObject("WScript.Shell")
dim filesys, filetxt
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set filesys = CreateObject("Scripting.FileSystemObject")
Set filetxt = filesys.OpenTextFile("C:\log.txt", ForWriting, True)
SelectToAccess "TRANSFORM Max([1].a) AS [Max-a] SELECT '1', Sum([1].[a]) AS Итог FROM 1 GROUP BY '1' PIVOT [1].b"
filetxt.Close
'''''''''''''''''''''''''''''''''''''''
Sub SelectToAccess(query)
Dim ADOCon, ADOrs
Set ADOCon=CreateObject("ADODB.Connection")
Set ADOrs=CreateObject("ADODB.Recordset")
ADOCon.ConnectionTimeOut = 10
ADOCon.CommandTimeout = 10
ADOCon.ConnectionString="Provider=MSDASQL.1;Password=pass;Persist Security Info=True;User ID=admin;Data Source=db"
ADOCon.Open
Set ADOrs = ADOCon.Execute(query)
Do While Not ADOrs.EOF
res=""
For Each Field In ADOrs.Fields
res = res&"|"&Field
Next
filetxt.WriteLine res
ADOrs.MoveNext
Loop
ADOCon.Close
ADOCon = empty
End Sub
dim filesys, filetxt
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set filesys = CreateObject("Scripting.FileSystemObject")
Set filetxt = filesys.OpenTextFile("C:\log.txt", ForWriting, True)
SelectToAccess "TRANSFORM Max([1].a) AS [Max-a] SELECT '1', Sum([1].[a]) AS Итог FROM 1 GROUP BY '1' PIVOT [1].b"
filetxt.Close
'''''''''''''''''''''''''''''''''''''''
Sub SelectToAccess(query)
Dim ADOCon, ADOrs
Set ADOCon=CreateObject("ADODB.Connection")
Set ADOrs=CreateObject("ADODB.Recordset")
ADOCon.ConnectionTimeOut = 10
ADOCon.CommandTimeout = 10
ADOCon.ConnectionString="Provider=MSDASQL.1;Password=pass;Persist Security Info=True;User ID=admin;Data Source=db"
ADOCon.Open
Set ADOrs = ADOCon.Execute(query)
Do While Not ADOrs.EOF
res=""
For Each Field In ADOrs.Fields
res = res&"|"&Field
Next
filetxt.WriteLine res
ADOrs.MoveNext
Loop
ADOCon.Close
ADOCon = empty
End Sub
ну и забыл добавить что в MS Access настроена AD аутентификация