powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Разрыв соединения, что делать?
32 сообщений из 32, показаны все 2 страниц
Разрыв соединения, что делать?
    #32194557
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня периодически Access теряет соединение с MS SQL сервером.

Вот в таком коде:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Dim cnn As ADODB.Connection
Dim cmd As ADODB.Command
Dim RS As Recordset

  Set cnn = New ADODB.Connection
  Set cmd = New ADODB.Command
  Set cnn = CurrentProject.Connection

  If cnn.State = adStateOpen Then
 -- Всегда переходит сюда. Значение cnn.State=1 (проверял)
 
    MsgBox  "The Connection is now open!" 
  Else
    MsgBox  "Sorry. The connection could not be opened." 
  End If

  Set cmd.ActiveConnection = cnn

  With cmd
 -- SRM_GetPeopleAddFieldsList - процедура на сервере. Пока соединение
 
 -- не разорвано выполняется отлично.
 
    .CommandText =  "SRM_GetPeopleAddFieldsList" 
    .CommandType = adCmdStoredProc
  End With

 -- Когда соединение разорвано говорит: "Connection failure"
 
  Set RS = cmd.Execute

Вопрос, как восстановить соединение?! Или я ВСЕ делаю не так как ПРАВИЛЬНО
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32194580
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CurrentProject.IsConnected - Тоже Truе выдает! :(

CurrentProject.OpenConnection - Не спасает отца русской демократии - Connection Failure (там же)
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32194675
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не большой знаток MS SQL+ADP, но тут вроде их и знать особо не надо.... :)

Если я правильно понял, у тебя изредка рвется соединение и его надо восстанавливать?
Лично я у себя завел отдельную функцию, котрая выполняет подключение и возвращает ADODB.Connection (его и использую)
В ней я делаю проверку как и у тебя на "открытость" соединения

If cnn.State = adStateOpen Then
'Все тип-топ
Возвращаем значение функции
Conn=cnn
exit function
Else
'Ничего не открыто - открываем
'далее идет код открытия соединения
Set cnn=...
....
....
Conn=cnn ' присваеваем функции конектион и уходим
End If
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32194833
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык в том-то и беда, что
If cnn.State = adStateOpen Then
Всегда говорит - порядок, соединение установлено :(
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32194841
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2 mahoune:

На колени падаю, миллион енотов готов заплатить - как поменять шрифт посреди текста?
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32194843
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Всегда говорит - порядок, соединение установлено

cnn - ссылка на CurrentProject.Connection
у меня cnn создается через Open.
Исправь через создание нового конекта через cnn.Open, тогда должно заработать - по-видимому CurrentProject.Connection
всегда считается открытым коль загрузил акес или еще какая особенность.
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32194847
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Саныч
>На колени падаю, миллион енотов готов заплатить - как поменять шрифт посреди текста?

Ты, че? там все форматирование делается автоматом, в ручную вроде никак.

Код: plaintext
1.
MsgBox  "Sorry. The connection could not be opened." 


реакция на двойные кавычки, по-видимому
если апостоф - то как бы комментарий (глючт падла)
ну и так далее
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32194856
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Я не про то. Пост mahoune за 11:53, вторая строка.
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32194858
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Владимир Саныч, тщательней надо смотреть посты в формах Тест и Обсуждение нашего сайта!
[ fixed ]
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32194861
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
mahoune - садюга.
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32194863
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно проверять наличие 'живого' соединиения, запуская какую-нибудб ХП на сервере, можно даже специально для этой цели ее прописать. Если метод Execute обломится, значит нужно восстанавливать соединение.
А не пытался разобраться почему рвется коннект?
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32194866
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Владимир Саныч, приглядись повнимательней к ответу

2Pavel, да метод подойти может... Спасибо. Пытаюсь разобраться, но у меня схема очень сложная:

Access -> NAT -> FireWall -> internet -> FireWall -> SQL Server

Соответственно на машине с Access'ом нет внешнего IP как такового. Хотя все необходимые порты для MS SQL сервера открыл, включая UDP...

А соединение не только Access рвет, но и Terminal Client (похоже по таймауту), и QueryAnalizer! :(
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32194868
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Открою страшшшную тайну (может быть:) еси получится...
<FONT FACE="Courier New">Тайна</FONT>
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32194871
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
mahoune, я буду ругаться нецензурно.
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32194873
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тайна не прокатила Махаон, млин, гони тайну! :)
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32194874
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет Нуф-нуф , ты не прав!

mahoune
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32194877
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тааааааак... Прекратили помощь Махаону, пока не расколется
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32194878
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Владимир Саныч, нажми Ctrl+A и посмотри мои посты в этом треде!
ёпрст - Нашел? :) [ fixed ]
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32194888
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Все равно садюга. А этот цвет как делается?
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32194894
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как бы ты сделал?
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32194896
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... Другой вопрос: А как прятать? :)
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32194897
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
[ mahoune ]
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32194906
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прикольно
Новый тег - [ mahoune ] :))
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32194911
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Артем1, а вот он тоже разобрался!
Посказка, описание тэга моноширинного шрифта в одном форуме и треде с описанием тэга изменения цвета! Но это все было на старом форуме, но туда есть ссылка!
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32194965
Фотография Артист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Его самого то везде учат... отвечают...
а сам то он....

mahoune писал:
и как народ quote делает?

Judge, спасибо!
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32195008
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно... [ color=#rrggbb ]Text[ /color ]
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32195019
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Ладно... [ color=#rrggbb ]Text[ /color ]

Секрет Полишенеля
Красный
Код: plaintext
1.
[color=red] Красный [/color]


ты лучше на вопрос Владимир Саныча ответь, скрытный ты наш :)
а заодно по поводу моего предложения по cnn.Open
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32195169
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну я же уже все сказал...
[ fixed ]
[ color = #446699 ]

Ну что ж вы так.. а?

А по поводу ттвоего предложения, смогу проверить только ближе к вечеру :(
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32195180
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Махуня нехороший человек.
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32195207
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Владимир Саныч, и чем я нехороший? Очень даже приличный!
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32195751
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да!

2Senin Viktor , все заработало! Подключение обвалилось! Создается Connection, как ты и советовал, и все работает ок!
Один маленький вопросец: А ты как запоминаешь ConnectionString?

Я все примерно так организовал:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Dim cnn As ADODB.Connection
Dim cmd As ADODB.Command
Dim RS As Recordset
Dim CnnStr As String

  Set cnn = New ADODB.Connection
  Set cmd = New ADODB.Command

  CnnStr = CurrentProject.BaseConnectionString
  cnn.Open (CnnStr)

  If Not (cnn.State = adStateOpen) Then
    Exit Sub
  End If

  Set cmd.ActiveConnection = cnn

  With cmd
    .CommandText =  "SRM_GetPeopleAddFieldsList" 
    .CommandType = adCmdStoredProc
  End With

  Set RS = cmd.Execute

mahoune
...
Рейтинг: 0 / 0
Разрыв соединения, что делать?
    #32195768
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2mahoune

>Один маленький вопросец: А ты как запоминаешь ConnectionString?
Строку подключение я формирую сам, при загрузке базы

>Подключение обвалилось
Что обалилось? Сломалось? Испортилось? Не работает?

У меня несколько другой подход. Я уже описывал его.
Есть всегда открытй конект с базе ( в моем случае mdb, но это роли не играет)
Конект открывается в момент загрузки программы, вызывается как функция возвращаемая объект ADODB.Connection
В этой фукнкции я делаю проверку открыт ли конект или нет, если открыт то просто возвращаю значение функции, если закрыт (из-за сбоя в проге, потере связи и т.п.) то заново открываю и опять же возвращаю.
Плюсы: не надо тратить время на подключения к бд
Минусы: еще не встретил. но и не исключаю.
А вообще, стараюсь использовать CurrentProject.Connection

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
Public Function cnnRemDataServerCursor() As ADODB.Connection
    On Error GoTo mis

    Dim tmpLng                     As Long
    Dim tmpStr                     As String
    Const cnnNameOfFileData        As String =  "data.mdb"     ' имя файла с данными
'tmpcnnRemDataServerCursor  - переменая As ADODB.Connection
    If Not (tmpcnnRemDataServerCursor Is Nothing) Then
        'если перемнная создана проверим на ее состояние
        Select Case tmpcnnRemDataServerCursor.state
            Case adStateOpen
                Set cnnRemDataServerCursor = tmpcnnRemDataServerCursor
                GoTo ext
            Case Else
                GoTo OpenCon
        End Select
    End If
OpenCon:
    Set tmpcnnRemDataServerCursor = New ADODB.Connection
    With tmpcnnRemDataServerCursor
        'присвоим всю строку целиком от текущего конекта
        'и изменим только место расположения файла

        If Len(strPathToRemoteFile) = 0 Then
            tmpStr = PathToData()
        Else
            tmpStr = strPathToRemoteFile
        End If
        .ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0" & _
                            ";User ID=Admin" & _
                            ";DATA SOURCE=" & tmpStr & _
                            ";PERSIST SECURITY INFO=FALSE" & _
                            ";Jet OLEDB:System database=C:\PROGRA~1\COMMON~1\System\SYSTEM.MDW"

        .Open
    End With
    Set cnnRemDataServerCursor = tmpcnnRemDataServerCursor

ext:
    Exit Function
mis:
    Select Case err.Number
        Case -2147217843    'Сбой проверки подлинности
            tmpLng = tmpLng +  1 
            If tmpLng <  10  Then
                Resume
            Else
                Resume Next
            End If
        Case Else
            MsgBox err.Description, vbCritical, err.Number
    End Select
End Function

...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Разрыв соединения, что делать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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