我是用VPN连接远程数据库库的,但是存在这样一个问题,就是在运行程序窗体一段时间后,再执行窗体里面的查询按钮就会提示“DBNETLIB [ConnectionOpen (Connect())] SQL SERVER 不存在或拒绝访问”,有的时候提示“网络超时”,必须把程序关掉,再重新运行,这样就好了,但是过一段时间就又会重复上面的过程,这是什么原因呢,真苦恼!是我连接语句的问题还是其他原因,我是把连接数据库的语句写在模块里了。
Option Explicit
'定义全局标量用于连接数据库
Public conn As New ADODB.Connection
Public strconn As String
Public Cmd As New ADODB.Command
Public jgdm As New ADODB.Recordset
Public qy As New ADODB.Recordset'Public objDataLink As MSDASC.DataLinks
Sub Main()
' If App.PrevInstance = True Then
' MsgBox " 系统巳在运行中 !!! ", vbQuestion
' End
' End If
If Not ServerConnect Then
MsgBox "数据库联接错误,请查看联机帮助文件 !!! ", vbCritical
End
End If
frmprint.Show
End Sub
Public Function ServerConnect() As Boolean
ServerConnect = False
Dim a, b, c As Variant
Dim database As String
Dim SQLstatus As StringOn Error GoTo ErrHandle
SQLstatus = "SQL"
Select Case UCase(SQLstatus)
Case "ACCESS"
'strConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Password='';Data Source=" & App.Path & "\card.mdb"
Case "SQL"
strconn = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;password=;Initial Catalog=db;Data Source=172.168.1.5"
End Select
conn.ConnectionString = strconn
conn.CommandTimeout = 120
conn.Open strconn
ServerConnect = True
Exit Function
ErrHandle:
Dim adoErr As ADODB.Error
If conn.Errors.Count > 0 Then
For Each adoErr In conn.Errors
MsgBox "[Error Code] " & adoErr.Number & Chr(13) & adoErr.Description, vbCritical + vbOKOnly, "Error"
Next adoErr
End If
End Function
Option Explicit
'定义全局标量用于连接数据库
Public conn As New ADODB.Connection
Public strconn As String
Public Cmd As New ADODB.Command
Public jgdm As New ADODB.Recordset
Public qy As New ADODB.Recordset'Public objDataLink As MSDASC.DataLinks
Sub Main()
' If App.PrevInstance = True Then
' MsgBox " 系统巳在运行中 !!! ", vbQuestion
' End
' End If
If Not ServerConnect Then
MsgBox "数据库联接错误,请查看联机帮助文件 !!! ", vbCritical
End
End If
frmprint.Show
End Sub
Public Function ServerConnect() As Boolean
ServerConnect = False
Dim a, b, c As Variant
Dim database As String
Dim SQLstatus As StringOn Error GoTo ErrHandle
SQLstatus = "SQL"
Select Case UCase(SQLstatus)
Case "ACCESS"
'strConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Password='';Data Source=" & App.Path & "\card.mdb"
Case "SQL"
strconn = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;password=;Initial Catalog=db;Data Source=172.168.1.5"
End Select
conn.ConnectionString = strconn
conn.CommandTimeout = 120
conn.Open strconn
ServerConnect = True
Exit Function
ErrHandle:
Dim adoErr As ADODB.Error
If conn.Errors.Count > 0 Then
For Each adoErr In conn.Errors
MsgBox "[Error Code] " & adoErr.Number & Chr(13) & adoErr.Description, vbCritical + vbOKOnly, "Error"
Next adoErr
End If
End Function
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货