Public Function executesql(ByValSQL As String, megstring As String) As ADODB.Recordset
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sTokens() As String
On Error GoTo executesql_error
sTokens = Split(SQL)
Set cnn = New ADODB.Connection
cnn.Open connectstring
If InStr("insert,delete,update", UCase$(sTokens(0))) Then
cnn.Execute SQL
msgstring = sTokens(0) & "query successful"
Else
Set rst = New ADODB.Recordset
rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic
Set executesql = rst
msgstring = "查询到" & rst.RecordCount
End If
executesql_exit:
Set rst = Nothing
Set cnn = Nothing
Exit Function
executesql_error:
msgstring = "查询错误:" & Err.Description
Resume executesql_exit
End Function
Public Function connectstring() As String
connectstring = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=manage;uid=;pwd="
End Function
Public Function test(txt As String) As Boolean
If Trim(txt) = "" Then
testtxt = False
Else
testtxt = True
End If
End Function好象是数据库连接的问题。
connectstring = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=manage;uid=;pwd="
是不是这句写得不对!数据库是access,没设用户和密码!
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sTokens() As String
On Error GoTo executesql_error
sTokens = Split(SQL)
Set cnn = New ADODB.Connection
cnn.Open connectstring
If InStr("insert,delete,update", UCase$(sTokens(0))) Then
cnn.Execute SQL
msgstring = sTokens(0) & "query successful"
Else
Set rst = New ADODB.Recordset
rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic
Set executesql = rst
msgstring = "查询到" & rst.RecordCount
End If
executesql_exit:
Set rst = Nothing
Set cnn = Nothing
Exit Function
executesql_error:
msgstring = "查询错误:" & Err.Description
Resume executesql_exit
End Function
Public Function connectstring() As String
connectstring = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=manage;uid=;pwd="
End Function
Public Function test(txt As String) As Boolean
If Trim(txt) = "" Then
testtxt = False
Else
testtxt = True
End If
End Function好象是数据库连接的问题。
connectstring = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=manage;uid=;pwd="
是不是这句写得不对!数据库是access,没设用户和密码!
http://www.connectionstrings.com/^_^
& "Data Source=" & GetPath & "\gl.mdb" & _
";Persist Security Info=False"
数据库连接怎么这么麻烦啊!
谁愿意帮我弄明白着,愿意独加50分(重新追加)以示感谢!我跟踪了一下程序,老是跑到错误标号executesql_error:那个地方去了,所以我认为数据库连接有问题!
直接:
Public Function executesql(ByValSQL As String, megstring As String) As ADODB.Recordset
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sTokens() As String
On Error GoTo executesql_error
sTokens = Split(SQL)
Set cnn = New ADODB.Connection
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & App.Path & "\db1.mdb;" & _
"Persist Security Info=False"
If InStr("insert,delete,update", UCase$(sTokens(0))) Then
cnn.Execute SQL
msgstring = sTokens(0) & "query successful"
Else
Set rst = New ADODB.Recordset
rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic
Set executesql = rst
msgstring = "查询到" & rst.RecordCount
End If
executesql_exit:
Set rst = Nothing
Set cnn = Nothing
Exit Function
executesql_error:
msgstring = "查询错误:" & Err.Description
Resume executesql_exit
End Function
连接ACCESS,也要这么多语句吗?
If cn.State = adStateClosed Then
cn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=wq_yjr;Data Source=wangqiaosoft"
cn.Open
End If
2 连接网络sql
If Conn.State = adStateClosed Then
Conn.ConnectionString = "Provider=SQLOLEDB.1;Password=wqsoft;Persist Security Info=True;User ID=oft;Initial Catalog=soft;Data Source=222.190.7.12"
Conn.Open
End If3 连接accessIf cn.State = adStateClosed Then
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
"" & App.Path & "\yjr.mdb;Persist Security Info=False"
cn.Open
End If
Dim mrst As New ADODB.Recordset
Dim mReturnMsg As String
mReturnMsg = ""
Set mrst = executesql("select * from Table1", mReturnMsg)
MsgBox "影响字段数" & mrst.Fields.Count & " " & mReturnMsg
Set mrst = Nothing
End Sub
Public Function executesql(ByVal SQL As String, msgstring As String) As ADODB.Recordset
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sTokens() As String
On Error GoTo executesql_error
sTokens = Split(SQL)
Set cnn = New ADODB.Connection
cnn.Open connectstring
If InStr("insert,delete,update", LCase$(sTokens(0))) Then
cnn.Execute SQL
msgstring = sTokens(0) & "query successful"
Else
Set rst = New ADODB.Recordset
rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic
Set executesql = rst
msgstring = "查询到" & rst.RecordCount
End If
executesql_exit:
Set rst = Nothing
Set cnn = Nothing
Exit Function
executesql_error:
msgstring = "查询错误:" & Err.Description
Resume executesql_exit
End Function
Public Function connectstring() As String
connectstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb" & ";Persist Security Info=False"
End FunctionPrivate Sub Command2_Click()
Dim mrst As New ADODB.Recordset
Dim mReturnMsg As String
mReturnMsg = ""
Call executesql("delete from Table1 where Field1 = '" & "ABCD'", mReturnMsg)
MsgBox mReturnMsg
Set mrst = Nothing
End Sub
1、ByValSQL 应该是 ByVal SQL2、megstring 应该是 msgstring3、UCase 应该是 LCase
实时错误 ’-214767259 (80004005)
常见错误: 无效的文件 dsn 'manage'好象是数据源的错误,但是我重新配置了一个,发现还是这样的问题。我用vb
的 vb数据窗口向导 做窗体的时候,发现不能识别access数据库,所以只要用
odbc去连接,发现根据向导做成的窗体的功能还是正常的,这样是不是说明manage 这个数据源没有问题?但是错误提示为什么又是上面那样的呢?
cnn.Open "数据源名称","用户","密码"
1、ByValSQL 应该是 ByVal SQL2、megstring 应该是 msgstring3、UCase 应该是 LCase