Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: поверка потключения к MS SQL
 
 автор: ddi   (03.09.2011 в 12:28)   личное сообщение
 
 

как проверит потклчён ли аксс к MS SQL 2008 R2 если нет то запустить ярлык VPN потключения ?

  Ответить  
 
 автор: ddi   (03.09.2011 в 20:03)   личное сообщение
 
 


Option Compare Database
Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Function callvpn()
Dim cnn As Object
Set cnn = CreateObject("ADODB.Connection")
cnn.Open "DSN=p;UID=sa;PWD=000000;"
If cnn.State = adStateOpen Then
cnn.Close
Exit Function
Else
Call ShellExecute(0, vbNullString, "d:\post\temp\vpn\d.lnk", vbNullString, vbNullString, vbNormalFocus)
End If
End Function


работает но прога завсает примерно 30 сек

  Ответить  
 
 автор: ddi   (03.09.2011 в 20:04)   личное сообщение
 
 

как по другому проверить б\д потклёчина к SQL или нет

  Ответить  
 
 автор: ddi   (04.09.2011 в 16:08)   личное сообщение
 
 

как я понимаю некто некогда н проверал потключена ли база к SQL

  Ответить  
 
 автор: час   (04.09.2011 в 20:18)   личное сообщение
 
 

Сегодня просто - выходной день, однако.

  Ответить  
 
 автор: ddi   (05.09.2011 в 08:40)   личное сообщение
 
 

А сегодня просто - понеделник

  Ответить  
 
 автор: Силblч   (05.09.2011 в 08:42)   личное сообщение
 
 

у меня к ораклу так


Public Function conn2dbasync(unm$, ppw$, Optional ccon& = 0)
Dim lngStartTime As Long
On Error GoTo err123
conn2dbasync = 0
If ccon = 0 Then
    If conn.State <> 0 Then conn.Cancel: Set conn = Nothing ': conn.Close
Else
    If conn.State = 1 Then conn2dbasync = 1: Exit Function
End If
Set conn = New ADODB.Connection
conn.ConnectionTimeout = 30
conn.CursorLocation = adUseClient
conn.ConnectionString = "<моя строка>"
conn.Open , , , adAsyncConnect
lngStartTime = GetTickCount()
Do While ((GetTickCount() - lngStartTime) < conn.ConnectionTimeout * 1000) And (Not conn.State = adStateOpen): Loop
If Not conn.State = adStateOpen Then
    If conn.State = adStateConnecting Then
        conn.Cancel
    End If
Else
    Call set_priv
    If conn.State = 0 And conn.Errors.Count > 0 Then Exit Function
    conn2dbasync = conn.State
End If
Exit Function
err123:
MsgBox Error & IIf(conn.Errors.Count > 0, vbCrLf & conn.Errors.Item(0).Description, ""), , "conn2dbasync"
Exit Function
End Function

имхо, зависает, потому что надо асинхронный режим использовать (adAsyncConnect)

  Ответить  
 
 автор: ddi   (05.09.2011 в 09:10)   личное сообщение
 
 

шас папробую

  Ответить  
 
 автор: ddi   (05.09.2011 в 09:51)   личное сообщение
 
 

как я понимаю это тоже с кодом идёт ?

Declare Function GetTickCount32 Lib "KERNEL32" _
  Alias "GetTickCount" () As Long
Declare Function GetTickCount16 Lib "User" Alias _
  "GetTickCount" () As Long
Function GetTickCount() As Long
  If Engine32%() Then
     GetTickCount = GetTickCount32()
  Else
     GetTickCount = GetTickCount16()
  End If
End Function
Function Engine32%()
  If SysCmd(7) > 2 Then Engine32% = True
End Function

  Ответить  
 
 автор: ddi   (05.09.2011 в 09:56)   личное сообщение
 
 

unm$, ppw$, Optional ccon& = 0 и это не нужно?

  Ответить  
 
 автор: Силblч   (05.09.2011 в 10:07)   личное сообщение
 
 

юзернэйм, пароль

это для в строке подключения использования

а это
параметр для обнуления коннекшина

  Ответить  
 
 автор: Силblч   (05.09.2011 в 10:06)   личное сообщение
 
 

по ходу да :)

  Ответить  
 
 автор: ddi   (05.09.2011 в 10:10)   личное сообщение
 
 

вроде тоже самое зависает((

  Ответить  
 
 автор: ddi   (05.09.2011 в 10:19)   личное сообщение
 
 

или я что-то не правильно делаю

  Ответить  
 
 автор: Силblч   (05.09.2011 в 11:37)   личное сообщение
 
 

пошагово попробуй - увидь где зависает

в любом случае, чтобы приложение не подвисало - надо подключаться в асинхронном режиме

  Ответить  
 
 автор: ddi   (05.09.2011 в 12:06)   личное сообщение
 
 


надо подключаться в асинхронном режиме

как это?

  Ответить  
 
 автор: ddi   (05.09.2011 в 12:07)   личное сообщение
 
 


Do While ((GetTickCount() - lngStartTime) < conn.ConnectionTimeout * 1000) And (Not conn.State = adStateOpen): Loop 

здесь пауза примерно в 30 - 40 сек

  Ответить  
 
 автор: ddi   (05.09.2011 в 12:15)   личное сообщение
159 Кб.
 
 


If Not conn.State = adStateOpen Then 

или здес короче когда потключаеца к удалёный бд
в ODBC есть такая кнопка но как к ней через вба потключица ((

  Ответить  
 
 автор: час   (05.09.2011 в 12:29)   личное сообщение
 
 

А зачем так на долго задан таймаут
Do While ((GetTickCount() - lngStartTime) < conn.ConnectionTimeout * 1000) And (Not conn.State = adStateOpen): Loop

  Ответить  
 
 автор: Силblч   (05.09.2011 в 12:29)   личное сообщение
 
 

ну у меня так задан :)) а чё? ;))

  Ответить  
 
 автор: час   (05.09.2011 в 12:47)   личное сообщение
 
 

ну у меня так задан :)) а чё? ;))
===========================
Ды не ни чё проста спрасил.....

  Ответить  
 
 автор: Силblч   (05.09.2011 в 12:31)   личное сообщение
 
 

я не черес одєбєцє
я черес MSDAORA

  Ответить  
 
 автор: Силblч   (05.09.2011 в 12:29)   личное сообщение
 
 

здесь, для асинхронного режима сделано так :)) или какоето время ждёт коннекшина от сервера отклика :) или пока сервер не скажет что conn.State = adStateOpen :)

просто при асинхронній режим приложение не задержуецца а дальше
а ті уже сам отловить должен факт

  Ответить  
 
 автор: Силblч   (05.09.2011 в 12:27)   личное сообщение
 
 

conn.Open , , , adAsyncConnect

посмотри параметрі коннекшнопена

  Ответить  
 
 автор: Силblч   (05.09.2011 в 12:58)   личное сообщение
 
 

для эмэсскула тоже есть , токо дома

  Ответить  
 
 автор: ddi   (05.09.2011 в 15:14)   личное сообщение
 
 

  Ответить  
 
 автор: Силblч   (05.09.2011 в 23:15)   личное сообщение
 
 

я табе абманул у меня тама ADP
а через ОДБЦ просто таблы поподключал к базе и все

но с ораклом уже через адодэбэ

смски отправлял через freemail.dll

  Ответить  
 
 автор: ddi   (06.09.2011 в 08:34)   личное сообщение
 
 

Понятно а случайно дома нету кода чтоб потключица к ОДБС ?

  Ответить  
 
 автор: Силblч   (06.09.2011 в 15:51)   личное сообщение
 
 


                '-- далее, в зависимости от типа настройки
                Select Case .Fields("lnkType")
'-- Link ODBC----------------------------------------------------------
                Case 3
                    If .Fields("dstPath") = "CurrentDB" Then
                        Set dbd = cbd
                    Else
                        Set dbd = DBEngine.Workspaces(0).OpenDatabase(.Fields("dstPath"))
                    End If
                    '-- удалить связь
                    On Error Resume Next
                    dbd.TableDefs.Delete .Fields("lnkNam")
                    dbd.TableDefs.Refresh
                    On Error GoTo ErrRefreshLinkTables
                    '-- создать по новой, если bLink<>0
                    If .Fields("bLink") <> 0 And .Fields("aLink") <> 0 Then
                        Set dtf = dbd.CreateTableDef(.Fields("lnkNam"))
                        '--"ODBC;DSN=<ВашСервер>;UID=UserID;PWD=PASSWORD;DATABASE=DBNAME;AutoTranslate=No"
                        dtf.Connect = .Fields("srcPath")
                        dtf.SourceTableName = .Fields("objNam")
                        'добавляем таблицу в семейство TableDefs
                        dbd.TableDefs.Append dtf
                        dbd.TableDefs.Refresh
                    End If

  Ответить  
 
 автор: ddi   (06.09.2011 в 16:34)   личное сообщение
 
 

шас попрбую

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList