标题: 求教更简练的ADO保存语句 [打印本页] 作者: 紫风 时间: 2011-9-26 16:53 标题: 求教更简练的ADO保存语句 中午突然想到一个有可能遇到的问题:
在用ADO保存记录时,如果窗体里有N个字段(几十个甚至更多),如下例:
Dim Stemp As String
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Stemp = "SELECT [tbl销售表].* FROM [tbl销售表] WHERE 货物编码 = '" & Me.货物编码 & "'"
rs.Open Stemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
With rs
![类别] = Me.类别
![单价] = Me.单价
![金额] = Me.金额
如果下面还有几十个字段
.Update
End With
虽然简单,但代码会写到手软……
不知道有没有简洁的语句,窗体里无论有多少个字段都保存到表里? 作者: yehf 时间: 2011-9-26 17:25
方法1:将需要使用的控件的标记属性统一设置为一个值(属性-其他-标记),例如"1"
dim ctl as control
for each ctl in me.controls
if ctl.tag=1 then rs(ctl.name)=ctl.value
next
方法2:控件重新命名为数字编号
for i = 1 to 10
rs(me.controls(i).name)=me.controls(i)
next
方法3:前提是rs的字段标题和控件名称一致
for i= 0 to rs.fields.count-1
rs(i)=me.controls(rs(i).name)
next 作者: todaynew 时间: 2011-9-26 19:35
Dim Stemp As String
Dim rs As New ADODB.Recordset
Dim ctrl as control
Stemp = "SELECT [tbl销售表].* FROM [tbl销售表] WHERE 货物编码 = '" & Me.货物编码 & "'"
rs.Open Stemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
for each ctrl in me.controls
rs.fields(ctrl.name).value=ctrl.value
next ctrl
rs.update