2 回答

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊
表中要有主鍵
打開記錄集用
adOpenStatic,
adLockBatchOptimistic
updatebatch放在你確定要更新的時(shí)候
相應(yīng)地取消更新用cancelbatch
CursorType、LockType
和
EditMode
屬性范例
該范例說(shuō)明如何在打開
Recordset
之前設(shè)置
CursorType
和
LockType
屬性。同時(shí)還顯示不同情況下
EditMode
的屬性值。該過(guò)程運(yùn)行時(shí)需要
EditModeOutput
函數(shù)。
Public
Sub
EditModeX()
Dim
cnn1
As
ADODB.Connection
Dim
rstEmployees
As
ADODB.Recordset
Dim
strCnn
As
String
'
使用雇員表中的數(shù)據(jù)打開記錄集。
Set
cnn1
=
New
ADODB.Connection
strCnn
=
"Provider=sqloledb;"
&
_
"Data
Source=srv;Initial
Catalog=pubs;User
Id=sa;Password=;
"
cnn1.Open
strCnn
Set
rstEmployees
=
New
ADODB.Recordset
Set
rstEmployees.ActiveConnection
=
cnn1
rstEmployees.CursorType
=
adOpenKeyset
rstEmployees.LockType
=
adLockBatchOptimistic
rstEmployees.Open
"employee",
,
,
,
adCmdTable
'
顯示不同編輯狀態(tài)下的
EditMode
屬性。
rstEmployees.AddNew
rstEmployees!emp_id
=
"T-T55555M"
rstEmployees!fname
=
"temp_fname"
rstEmployees!lname
=
"temp_lname"
EditModeOutput
"After
AddNew:",
rstEmployees.EditMode
rstEmployees.UpdateBatch
EditModeOutput
"After
UpdateBatch:",
rstEmployees.EditMode
rstEmployees!fname
=
"test"
EditModeOutput
"After
Edit:",
rstEmployees.EditMode
rstEmployees.Close
'
刪除新記錄,因?yàn)檫@只是演示。
cnn1.Execute
"DELETE
FROM
employee
WHERE
emp_id
=
'T-T55555M'"
End
Sub
Public
Function
EditModeOutput(strTemp
As
String,
_
intEditMode
As
Integer)
'
打印基于
EditMode
屬性值的報(bào)表。
Debug.Print
strTemp
Debug.Print
"
EditMode
=
";
Select
Case
intEditMode
Case
adEditNone
Debug.Print
"adEditNone"
Case
adEditInProgress
Debug.Print
"adEditInProgress"
Case
adEditAdd
Debug.Print
"adEditAdd"
End
Select
End
Function
Adodc1.Recordset.EditMode這句話是表示Adodc1當(dāng)前的狀態(tài)
在添加前先判斷該數(shù)據(jù)在數(shù)據(jù)庫(kù)中是否存在
data.edit表示進(jìn)入編輯狀態(tài)。

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊
表中要有主鍵
打開記錄集用 adOpenStatic, adLockBatchOptimistic
updatebatch放在你確定要更新的時(shí)候
相應(yīng)地取消更新用cancelbatch
CursorType、LockType 和 EditMode 屬性范例
該范例說(shuō)明如何在打開 Recordset 之前設(shè)置 CursorType 和 LockType 屬性。同時(shí)還顯示不同情況下 EditMode 的屬性值。該過(guò)程運(yùn)行時(shí)需要 EditModeOutput 函數(shù)。
Public Sub EditModeX()
Dim cnn1 As ADODB.Connection
Dim rstEmployees As ADODB.Recordset
Dim strCnn As String
' 使用雇員表中的數(shù)據(jù)打開記錄集。
Set cnn1 = New ADODB.Connection
strCnn = "Provider=sqloledb;" & _
"Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
cnn1.Open strCnn
Set rstEmployees = New ADODB.Recordset
Set rstEmployees.ActiveConnection = cnn1
rstEmployees.CursorType = adOpenKeyset
rstEmployees.LockType = adLockBatchOptimistic
rstEmployees.Open "employee", , , , adCmdTable
' 顯示不同編輯狀態(tài)下的 EditMode 屬性。
rstEmployees.AddNew
rstEmployees!emp_id = "T-T55555M"
rstEmployees!fname = "temp_fname"
rstEmployees!lname = "temp_lname"
EditModeOutput "After AddNew:", rstEmployees.EditMode
rstEmployees.UpdateBatch
EditModeOutput "After UpdateBatch:", rstEmployees.EditMode
rstEmployees!fname = "test"
EditModeOutput "After Edit:", rstEmployees.EditMode
rstEmployees.Close
' 刪除新記錄,因?yàn)檫@只是演示。
cnn1.Execute "DELETE FROM employee WHERE emp_id = 'T-T55555M'"
End Sub
Public Function EditModeOutput(strTemp As String, _
intEditMode As Integer)
' 打印基于 EditMode 屬性值的報(bào)表。
Debug.Print strTemp
Debug.Print " EditMode = ";
Select Case intEditMode
Case adEditNone
Debug.Print "adEditNone"
Case adEditInProgress
Debug.Print "adEditInProgress"
Case adEditAdd
Debug.Print "adEditAdd"
End Select
End Function
Adodc1.Recordset.EditMode這句話是表示Adodc1當(dāng)前的狀態(tài)
在添加前先判斷該數(shù)據(jù)在數(shù)據(jù)庫(kù)中是否存在
data.edit表示進(jìn)入編輯狀態(tài)。
- 2 回答
- 0 關(guān)注
- 229 瀏覽
添加回答
舉報(bào)