powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как получить код ошибки из WshShell
10 сообщений из 10, страница 1 из 1
Как получить код ошибки из WshShell
    #39017715
гр к
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запускаю из WshShell утилиту sqlcmd
Код: vbnet
1.
2.
Set WshShell = CreateObject("WScript.Shell")
WshShell.exec "sqlcmd.exe " & strSQLCMD


При заведомо неправильной строке strSQLCMD хочу получить код ошибки, но Err.Number возвращает 0.
Как быть?
...
Рейтинг: 0 / 0
Как получить код ошибки из WshShell
    #39017850
1244
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гр кЗапускаю из WshShell утилиту sqlcmd
Код: vbnet
1.
2.
Set WshShell = CreateObject("WScript.Shell")
WshShell.exec "sqlcmd.exe " & strSQLCMD


При заведомо неправильной строке strSQLCMD хо
чу получить код ошибки,
но Err.Number возвращает 0.

Как быть?
а

забей
...
Рейтинг: 0 / 0
Как получить код ошибки из WshShell
    #39018029
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гр к,
если программа действительно возвращает ERRORLEVEL, то получить его можно так (на примере команды dir)
Код: vbnet
1.
2.
3.
4.
5.
6.
Sub test()
Dim WshShell As Object
  Set WshShell = CreateObject("WScript.Shell")
  Debug.Print WshShell.Run("cmd /c dir c:", vbHide, True) 'диск существует, результат 0
  Debug.Print WshShell.Run("cmd /c dir z:", vbHide, True) 'диск не существует, результат 1
End Sub
...
Рейтинг: 0 / 0
Как получить код ошибки из WshShell
    #39018213
гр к
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Казанский, все равно 0 возвращается из скрипта. А если просто sqlcmd запустить с такой командой, то совершенно справедливо ругается на ошибку "There is already an object named 'p_test' in the database."
Прям не знаю, как и быть((
...
Рейтинг: 0 / 0
Как получить код ошибки из WshShell
    #39018219
гр к
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гр кКазанский, все равно 0 возвращается из скрипта. А если просто sqlcmd запустить с такой командой, то совершенно справедливо ругается на ошибку "There is already an object named 'p_test' in the database."
Прям не знаю, как и быть((
Однако ошибся, Параметры отчета об ошибках в самой команде sqlcmd не указал. Значит нужно дальше msdn по ней курить.
...
Рейтинг: 0 / 0
Как получить код ошибки из WshShell
    #39018227
гр к
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Переделал вот так по справочнику:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Set WshShell = CreateObject("WScript.Shell")
Set WshExec = WshShell.Exec("sqlcmd " & strSQLCMD)
Set OutStream = WshExec.StdOut
qStr = vbNullString
While Not OutStream.AtEndOfStream
    qStr = qStr & Trim(OutStream.ReadLine()) & vbCrLf
Wend
Debug.Print qStr


Проблема в том, что вместо русских букв вылезают кракозябры типа
Код: vbnet
1.
‘®®ЎйҐ­ЁҐ 2714, га®ўҐ­м 16, б®бв®п­ЁҐ 3, бҐаўҐа 


Как такую беду побороть?
...
Рейтинг: 0 / 0
Как получить код ошибки из WshShell
    #39018797
hclubmk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гр к,
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Function D2W(DOS_STRING As String) As String
If Len(DOS_STRING) = 0 Then Exit Function
For i = 1 To Len(DOS_STRING)
    s = Asc(Mid(DOS_STRING, i, 1))
    If s >= 128 And s <= 175 Then
       D2W = D2W & Chr(s + 64)
    ElseIf s >= 224 And s <= 239 Then
       D2W = D2W & Chr(s + 16)
    ElseIf s = 240 Then
       D2W = D2W & Chr(168)
    ElseIf s = 241 Then
       D2W = D2W & Chr(184)
    Else
       D2W = D2W & Chr(s)
    End If
Next
End Function
...
Рейтинг: 0 / 0
Как получить код ошибки из WshShell
    #39019212
гр к
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hclubmk, спасибо, коллега!
Сам бы я до посимвольного преобразования строки нипочем бы не додумался.
...
Рейтинг: 0 / 0
Как получить код ошибки из WshShell
    #39020269
гр к
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите еще, можно ли что-то с самим окном консоли сделать?
Я sqlcmd запускаю в цикле, и при каждом прогоне окно активизируется как собака, лезет поверх всех остальных окон.
Как-то можно эту неприятность удалить?
...
Рейтинг: 0 / 0
Как получить код ошибки из WshShell
    #39020857
hclubmk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как получить код ошибки из WshShell
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]