为了账号安全,请及时绑定邮箱和手机立即绑定

把数据写入到数据库,运行窗体总是提示:属性值无效?

把数据写入到数据库,运行窗体总是提示:属性值无效?

C PHP
沧海一幻觉 2022-08-11 11:07:08
然后鼠标就停在Adodc1.Recordset.EditMode这里。请高手帮帮忙,想知道Adodc1.Recordset.EditMode和Data.Edit有什么区别?下面是代码,代码有错吗?您写的答案我看不懂啊,可以不可以写简单点,到底我是错在哪了,我还搞不明白。
查看完整描述

2 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

表中要有主键
打开记录集用
adOpenStatic,
adLockBatchOptimistic
updatebatch放在你确定要更新的时候
相应地取消更新用cancelbatch
CursorType、LockType

EditMode
属性范例
该范例说明如何在打开
Recordset
之前设置
CursorType

LockType
属性。同时还显示不同情况下
EditMode
的属性值。该过程运行时需要
EditModeOutput
函数。
Public
Sub
EditModeX()
Dim
cnn1
As
ADODB.Connection
Dim
rstEmployees
As
ADODB.Recordset
Dim
strCnn
As
String
'
使用雇员表中的数据打开记录集。
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
'
显示不同编辑状态下的
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
'
删除新记录,因为这只是演示。
cnn1.Execute
"DELETE
FROM
employee
WHERE
emp_id
=
'T-T55555M'"
End
Sub
Public
Function
EditModeOutput(strTemp
As
String,
_
intEditMode
As
Integer)
'
打印基于
EditMode
属性值的报表。
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当前的状态
在添加前先判断该数据在数据库中是否存在
data.edit表示进入编辑状态。


查看完整回答
反对 回复 2022-08-15
?
慕慕森

TA贡献1856条经验 获得超17个赞

表中要有主键
打开记录集用 adOpenStatic, adLockBatchOptimistic
updatebatch放在你确定要更新的时候
相应地取消更新用cancelbatch
CursorType、LockType 和 EditMode 属性范例
该范例说明如何在打开 Recordset 之前设置 CursorType 和 LockType 属性。同时还显示不同情况下 EditMode 的属性值。该过程运行时需要 EditModeOutput 函数。

Public Sub EditModeX()

Dim cnn1 As ADODB.Connection
Dim rstEmployees As ADODB.Recordset
Dim strCnn As String

' 使用雇员表中的数据打开记录集。
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

' 显示不同编辑状态下的 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

' 删除新记录,因为这只是演示。
cnn1.Execute "DELETE FROM employee WHERE emp_id = 'T-T55555M'"

End Sub

Public Function EditModeOutput(strTemp As String, _
intEditMode As Integer)

' 打印基于 EditMode 属性值的报表。
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当前的状态
在添加前先判断该数据在数据库中是否存在
data.edit表示进入编辑状态。


查看完整回答
反对 回复 2022-08-15
  • 2 回答
  • 0 关注
  • 184 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信