Execute、Requery 和 Clear 方法範例 (VB)
這個範例示範從 Command 物件和 Connection 物件執行時的 Execute 方法。 還會使用 Requery 方法來擷取 recordset 中的目前資料,以及使用 Clear 方法來清除 Errors 集合的內容。 (必須透過 Recordset 的 ActiveConnection 屬性的 Connection 物件來存取 Errors 集合)。此程序需要 ExecuteCommand 和 PrintOutput 程序才能執行。
'BeginExecuteVB
'To integrate this code
'replace the data source and initial catalog values
'in the connection string
Public Sub Main()
On Error GoTo Err_Execute
' connection, command, and recordset variables
Dim Cnxn As ADODB.Connection
Dim cmdChange As ADODB.Command
Dim rstTitles As ADODB.Recordset
Dim Err As ADODB.Error
Dim strSQLChange As String
Dim strSQLRestore As String
Dim strSQLTitles
Dim strCnxn As String
' Define two SQL statements to execute as command text
strSQLChange = "UPDATE Titles SET Type = 'self_help' WHERE Type = 'psychology'"
strSQLRestore = "UPDATE Titles SET Type = 'psychology' WHERE Type = 'self_help'"
' Open connection
strCnxn = "Provider='sqloledb';Data Source='MySqlServer';" & _
"Initial Catalog='Pubs';Integrated Security='SSPI';"
Set Cnxn = New ADODB.Connection
Cnxn.Open strCnxn
' Create command object
Set cmdChange = New ADODB.Command
Set cmdChange.ActiveConnection = Cnxn
cmdChange.CommandText = strSQLChange
' Open titles table
Set rstTitles = New ADODB.Recordset
strSQLTitles = "titles"
rstTitles.Open strSQLTitles, Cnxn, , , adCmdTable
' Print report of original data
Debug.Print _
"Data in Titles table before executing the query"
PrintOutput rstTitles
' Call the ExecuteCommand subroutine below to execute cmdChange command
ExecuteCommand cmdChange, rstTitles
' Print report of new data
Debug.Print _
"Data in Titles table after executing the query"
PrintOutput rstTitles
' Use the Connection object's execute method to
' execute SQL statement to restore data and trap for
' errors, checking the Errors collection if necessary
Cnxn.Execute strSQLRestore, , adExecuteNoRecords
' Retrieve the current data by requerying the recordset
rstTitles.Requery
' Print report of restored data using sub from below
Debug.Print "Data after executing the query to restore the original information "
PrintOutput rstTitles
' clean up
rstTitles.Close
Cnxn.Close
Set rstTitles = Nothing
Set Cnxn = Nothing
Exit Sub
Err_Execute:
' Notify user of any errors that result from
' executing the query
If rstTitles.ActiveConnection.Errors.Count >= 0 Then
For Each Err In rstTitles.ActiveConnection.Errors
MsgBox "Error number: " & Err.Number & vbCr & _
Err.Description
Next Err
End If
' clean up
If Not rstTitles Is Nothing Then
If rstTitles.State = adStateOpen Then rstTitles.Close
End If
Set rstTitles = Nothing
If Not Cnxn Is Nothing Then
If Cnxn.State = adStateOpen Then Cnxn.Close
End If
Set Cnxn = Nothing
If Err <> 0 Then
MsgBox Err.Source & "-->" & Err.Description, , "Error"
End If
End Sub
Public Sub ExecuteCommand(cmdTemp As ADODB.Command, rstTemp As ADODB.Recordset)
Dim Err As Error
' Run the specified Command object and trap for
' errors, checking the Errors collection
On Error GoTo Err_Execute
cmdTemp.Execute
On Error GoTo 0
' Retrieve the current data by requerying the recordset
rstTemp.Requery
Exit Sub
Err_Execute:
' Notify user of any errors that result from
' executing the query
If rstTemp.ActiveConnection.Errors.Count > 0 Then
For Each Err In rstTemp.ActiveConnection.Errors
MsgBox "Error number: " & Err.Number & vbCr & _
Err.Description
Next Err
End If
Resume Next
End Sub
Public Sub PrintOutput(rstTemp As ADODB.Recordset)
' Enumerate Recordset
Do While Not rstTemp.EOF
Debug.Print " " & rstTemp!Title & _
", " & rstTemp!Type
rstTemp.MoveNext
Loop
End Sub
'EndExecuteVB
另請參閱
Clear 方法 (ADO)
Command 物件 (ADO)
Connection 物件 (ADO)
Error 物件
Execute 方法 (ADO 命令)
Execute 方法 (ADO Connection)
Recordset 物件 (ADO)
Requery 方法