我有一个代码将数据上传到SQL服务器数据库,我试图添加一行IF代码,说明是否有连接然后继续,但如果没有连接则转到END。我很难搞清楚措辞和位置。连接的代码的开头是:
Public Function Update()
Dim cdb As DAO.Database, qdf As DAO.QueryDef
Dim rs As DAO.Recordset
Dim err As DAO.Error
Const ConnectionString = _
"ODBC;" & _
"Driver={SQL Server Native Client 10.0};" & _
"Server=SERV;" & _
"Database=DB;" & _
"UID=ID;" & _
"PWD=PWD;"
Set cdb = CurrentDb
Set qdf = cdb.CreateQueryDef("")
Set rs = CurrentDb.OpenRecordset("CDData", dbOpenTable)
qdf.Connect = ConnectionString
Do While Not rs.EOF
答案 0 :(得分:1)
虽然可以简单地尝试执行任何查询或命令,但“超时”和测试活动连接的延迟可能会导致非常长的延迟。因此,存在一种奇妙的技巧,它在Access中使用不同的连接机制,因此在尝试使用基于链接表的已保存查询时“减少”潜在的非常长的延迟。 (当您创建queryDef而不是链接表或基于链接表的查询到sql server时,会出现#34;不同的"连接系统)
如果您有一个有效的SQL连接,则以下代码将返回true或false:
Function TestLogin(strcon As String) As Boolean
On Error GoTo TestError
Dim dbs As DAO.Database
Dim qdf As DAO.QueryDef
Set dbs = CurrentDb()
Set qdf = dbs.CreateQueryDef("")
qdf.Connect = strcon
qdf.ReturnsRecords = False
'Any VALID SQL statement that runs on server will work below.
qdf.SQL = "SELECT 1 as test"
qdf.Execute
TestLogin = True
Exit Function
TestError:
TestLogin = False
Exit Function
结束功能
因此,在代码中,您现在使用连接字符串代码:
If TestLogIn(strConn) = false then
msgbox "no connection or logon invalid"
exit sub
End If
' record processing code goes here for successful logon/connection.