1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Wincc подключение к БД

Модератор: Глоб.модераторы

Ответить

Автор темы
Global_viewer
здесь недавно
здесь недавно
Сообщения: 38
Зарегистрирован: 28 дек 2013, 20:24
Имя: Ковалев Антон Русланович
Страна: РФ
город/регион: Екатеринбург
Поблагодарили: 1 раз

Wincc подключение к БД

Сообщение Global_viewer »

Пытаюсь прочитать ошибки при подключении к sql БД. Но ни коллекция Errors, ни объект Error ничего не дают т.е как будто ошибок нет,
хотя я специально изменял и юзера и пароль на не верные при подключении к БД.
Как же проверить что подключение произошло?
код ниже...

Код: Выделить всё

Con="Provider=SQLOLEDB.1;Persist Security Info=False;password=xxxxx;
User ID=user;Initial Catalog=xxxxx;Data Source=xxx.xxx.x.xxx\WINCC"
Set conn=CreateObject("ADODB.Connection")
conn.CursorLocation=3
conn.ConnectionTimeout = 10
conn.CommandTimeout = 10
conn.Open Con, , , adAsyncConnect

Do While conn.State = adStateConnecting
 'если параметры подключения не верны,как я понял,  цикл бедет пока не кончится ConnectionTimeout  , но ошибок почему то нет.
 ' более того, этот цикл почему то не завершается т.к сообщение ниже не выводится
Loop
Msgbox "сообщение"
Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2471
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 2121 раз
Поблагодарили: 208 раз

Wincc подключение к БД

Сообщение keysansa »

А тут только подключение к DB. Для того, что бы что-то получить, надо что-то выбрать.
Выбирают обычно SQL запросом.
А его нет.

ЗЫ. Возможно, я не правильно понял, и вы хотите понять, произошло ли подключение?
ПОка вижу, что у вас Async подключение. Оно может и через год установиться.
ЗЫЫ. И еще вижу, что сообщение вызывается вне зависимости от того, было ли подключение.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.

LexSL
освоился
освоился
Сообщения: 208
Зарегистрирован: 16 дек 2011, 15:13
Имя: Алексей
Страна: Россия
Благодарил (а): 67 раз
Поблагодарили: 53 раза

Wincc подключение к БД

Сообщение LexSL »

Если не ошибаюсь, то у объекта ADODB.Connection есть событие ConnectionComplete, которое вызывается при установлении соединения.
Так как в VBS в WinCC нельзя установить обработчики событий, то при неверном логине и пароле у Вас цикл никогда не закончится.
Соответственно и MsgBox не покажется.
И делать циклы while в VBS WinCC крайне не советую, повесите всю скриптовую систему WinCC, а с ней и все остальное.
По крайней мере, на версии v7.2 было....давно было. Потом видел в даташите на какой то версии скриптовую систему WinCC сильно улучшили.

Вы бы для начала озвучили, чего хотите добиться.
Вычитать из другой базы какие-то таблицы и показать на экране WinCC?

И кстати, инстанс (instance) MSSQL сервера, который указывается в строке подключения в параметре DataSource:

Код: Выделить всё

Data Source=xxx.xxx.x.xxx\WINCC
является инстансом чисто для WinCC при установке WinCC (о чем указывает "\WINCC").
И вроде как по лицензионному соглашению, этот инстанс нельзя использовать для своих каких-то баз данных.
Но кого это когда либо останавливало? :ges_hmm:

Автор темы
Global_viewer
здесь недавно
здесь недавно
Сообщения: 38
Зарегистрирован: 28 дек 2013, 20:24
Имя: Ковалев Антон Русланович
Страна: РФ
город/регион: Екатеринбург
Поблагодарили: 1 раз

Wincc подключение к БД

Сообщение Global_viewer »

LexSL писал(а): 27 апр 2023, 08:55 И делать циклы while в VBS WinCC крайне не советую
Это понятно. Проблема как роз и была в том что бы прервать этот цикл если нет соединения.
В среде wincc есть только такой вариант...

Код: Выделить всё

 Do While conn.State = adStateConnecting
        On Error Resume Next
        If Err.Number > 0 Then
            Exit Do
        End If
    Loop
провда не очень понятна логика работы On Error Resume Next.
Вроде без него ошибки не генерятся т.к я проверял ткой вариант т.е без On Error Resume Next цикл виснет

Код: Выделить всё

  Do While conn.State = adStateConnecting
        If Err.Number > 0 Then
            Exit Do
        End If
    Loop
Но этот метод не позволяет определить какие именно ошибки произошли или может? Кто копал глубже отзовись...

stesl
эксперт
эксперт
Сообщения: 1035
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 100 раз
Поблагодарили: 141 раз

Wincc подключение к БД

Сообщение stesl »

Global_viewer писал(а): 30 апр 2023, 13:53 не очень понятна логика работы On Error Resume Next
Так может его в конце поставить? Обработать ошибку, а уж потом

makesstr
освоился
освоился
Сообщения: 222
Зарегистрирован: 19 сен 2019, 10:09
Имя: Макс
Страна: Россия
город/регион: Славянск-на-Кубани
Благодарил (а): 5 раз
Поблагодарили: 38 раз

Wincc подключение к БД

Сообщение makesstr »

Насколько я понимаю Err.Number показывает код ошибки, например если вы ссылаетесь на переменную которой нет или делите на ноль и пр. Видимо с точки зрения vbs код написан правильно, ошибок нет, вот и Err.number не срабатывает, а с точки зрения sql ответа нет. Лучше не используйте циклы, если не хотите повесить и WinCC, и SQL, и то, с чего вы ведете опрос.
WinCC 7.4 SP1 Upd15, Step5.6

Автор темы
Global_viewer
здесь недавно
здесь недавно
Сообщения: 38
Зарегистрирован: 28 дек 2013, 20:24
Имя: Ковалев Антон Русланович
Страна: РФ
город/регион: Екатеринбург
Поблагодарили: 1 раз

Wincc подключение к БД

Сообщение Global_viewer »

makesstr писал(а): 01 май 2023, 10:27 Насколько я понимаю Err.Number показывает код ошибки
а может просто кол - во ошибок? Ни где описания не встеречалось?
А код рабочий, выдает ошибку если не верные параметры подключения. Просто не совсем понял логику On Error Resume Next
Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2471
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 2121 раз
Поблагодарили: 208 раз

Wincc подключение к БД

Сообщение keysansa »

Global_viewer писал(а): 30 апр 2023, 13:53 провда не очень понятна логика работы On Error Resume Next.
Это относится к циклу While, а не к соединению с БД
makesstr писал(а): 01 май 2023, 10:27 Насколько я понимаю Err.Number показывает код ошибки, например если вы ссылаетесь на переменную которой нет или делите на ноль и пр.
По Ctrl+Click попробуйте перейти к объявлению переменной, в каком модуле она объявляется. Но так как VBS допускает использование переменных, без их объявления, то может и не получиться...
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.

Автор темы
Global_viewer
здесь недавно
здесь недавно
Сообщения: 38
Зарегистрирован: 28 дек 2013, 20:24
Имя: Ковалев Антон Русланович
Страна: РФ
город/регион: Екатеринбург
Поблагодарили: 1 раз

Wincc подключение к БД

Сообщение Global_viewer »

keysansa писал(а): 01 май 2023, 21:02 Это относится к циклу While, а не к соединению с БД
Вроде, там собираются любые ошибки
Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2471
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 2121 раз
Поблагодарили: 208 раз

Wincc подключение к БД

Сообщение keysansa »

Global_viewer писал(а): 01 май 2023, 21:12
keysansa писал(а): 01 май 2023, 21:02 Это относится к циклу While, а не к соединению с БД
Вроде, там собираются любые ошибки
Эта конструкция определяет поведение цикла while, при возникновении исключения внутри цикла. Так то ты правы, но неверный пароль - не приведет к возникновению исключения.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
Ответить

Вернуться в «WinCC»