powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Результат функции объектного типа
13 сообщений из 13, страница 1 из 1
Результат функции объектного типа
    #39508221
Даниил Пакоv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста , новичку), можно ли результату функции присвоить значение объектного типа, например, мною написана функция , устанавливающая соединение с MySql

Function toMySql()

Dim MySqlCon As Object
Set MySqlCon = New ADODB.Connection
Set toMySql = MySqlCon

MySqlCon.Open "DRIVER={MySQL ODBC 5.3 Unicode Driver};" & _
"SERVER=srv-mysql;" & _
"DATABASE=MIC1;" & _
"UID=test;" & _
"PASSWORD=123456;" & _
"PORT:3306;" & _
"charset=cp1251;" & _
"Option=3;"
If MySqlCon.State = adStateOpen Then
'MsgBox "Connected! =)"
toMySql = MySqlCon
End If
End Function

Функция сама по себе работает , но при обращении к ней из процедуры

Private Sub Workbook_Open()
Dim V As Object
If toMySql().State = adStateOpen Then


MsgBox ("Привет")
End If
End Sub
возникает 424 ошибка, я так понимаю связанная с описание объекта
Сам пишу на С++ , вот пробую разобраться с VBA / Работает ли в VBA объектная модель в полном ее смысле слова?
Заранее спасибо
...
Рейтинг: 0 / 0
Результат функции объектного типа
    #39508229
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То, что Вы написали, открывает соединение и... забывает о нём. Resource leak в полный рост... зачем?
Сделайте нормально:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Private Sub Workbook_Open()
    Dim tmp As ADODB.Connection
    Set tmp = toMySql()
    If  tmp.State = adStateOpen Then
' .........
    tmp.Close
' .........
...
Рейтинг: 0 / 0
Результат функции объектного типа
    #39508237
Даниил Пакоv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Private Sub Workbook_Open()

Dim V As New ADODB.Connection
Set V = toMySql()



If V.State = adStateOpen Then


MsgBox ("Connected")
End If

Благодарю за совет.
Не работает, по прежнему
...
Рейтинг: 0 / 0
Результат функции объектного типа
    #39508238
Даниил Пакоv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка 424
...
Рейтинг: 0 / 0
Результат функции объектного типа
    #39508241
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Результат функции объектного типа
    #39508242
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даниил Пакоvвозникает 424 ошибка, я так понимаю связанная с описание объекта
Нам требуется угадать, на какой строке кода возникает ошибка и текст ошибки?
...
Рейтинг: 0 / 0
Результат функции объектного типа
    #39508246
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даниил Пакоv , As NEW у Вас категорически лишнее
...
Рейтинг: 0 / 0
Результат функции объектного типа
    #39508249
Даниил Пакоv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка возникает в после вызова функции
Set V = toMySql()
...
Рейтинг: 0 / 0
Результат функции объектного типа
    #39508262
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даниил ПакоvОшибка возникает в после вызова функции
Set V = toMySql()То есть текстом ошибки вы решили не делиться? После вызова функции - это на присвоении или на следующей строке? или вообще на любой следующей строке после вызова функции? Неужели нельзя четко и ясно описывать ситуацию, это ведь вам требуется помощь, а не нам требуется угадать, что у вас там происходит.

Ошибка скорее всего тут
Код: vbnet
1.
toMySql = MySqlCon

не хватает Set
...
Рейтинг: 0 / 0
Результат функции объектного типа
    #39508268
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Function toMySql() As ADODB.Connection

Dim MySqlCon As ADODB.Connection
Set MySqlCon = New ADODB.Connection

MySqlCon.Open "DRIVER={MySQL ODBC 5.3 Unicode Driver};" & _
"SERVER=srv-mysql;" & _
"DATABASE=MIC1;" & _
"UID=test;" & _
"PASSWORD=123456;" & _
"PORT:3306;" & _
"charset=cp1251;" & _
"Option=3;"
If MySqlCon.State = adStateOpen Then
    Set toMySql = MySqlCon
End If
End Function


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Private Sub Workbook_Open()
' Dim V As Object
Dim V As ADODB.Connection

If Not V Is Nothing Then
    If toMySql().State = adStateOpen Then
        MsgBox ("State = adStateOpen")
    Else
        MsgBox ("State <> adStateOpen")
    End If
Else
    MsgBox "Not connected."
End If
End Sub

Функция toMySql должна быть размещена в common-модуле. А ещё в ней необходим обработчик ошибок.
...
Рейтинг: 0 / 0
Результат функции объектного типа
    #39508269
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS. Код - демо, так что MsgBox ("State <> adStateOpen") никогда не выполнится.
...
Рейтинг: 0 / 0
Результат функции объектного типа
    #39508278
Даниил Пакоv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо,заработало)

Private Sub Workbook_Open()
Dim V As ADODB.Connection
Set V = toMySql()
If Not V Is Nothing Then
If toMySql().State = adStateOpen Then
MsgBox ("State = adStateOpen")
Else
MsgBox ("State <> adStateOpen")
End If
Else
MsgBox "Not connected."
End If
...
Рейтинг: 0 / 0
Результат функции объектного типа
    #39517760
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати можете встретить также ошибку если провайдер не поддерживает внешние запросы на порт 3306 . Это надо помнить. Есть солидные компании, а есть просто квартирый вариант, который будет тебе объяснять мол давайте так, а мы может то, а мы можем се. Вам нужно статический IP.... мы пропишем у себя и все оки. Меняйте провайдера чтоб не портить себе нервы.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Результат функции объектного типа
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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