新手来看:如何重复上一条记录?
问题:
| 如何重复上一条记录?
有一个窗体,上面有多个文本框和组合框,因为目录这笔资料与下一笔资料大部门都是一样的,能不能利用COPY功能把上一笔的资料复制到下一笔的相对应的文本框和组合框内.最好是做成按钮式,即一个复制按钮和一个粘贴按钮。
---|---
方法一:
| 很多软件里面都有这个功能啊?
原理非常简单。
只要添加一个COMMAND __ BUTTON __ 就可以了。
添加记录的代码相信大家都知道了。
| Private __ Sub __ Command16_Click()
On __ Error __ GoTo __ Err_Command16_Click
__ __ __ __ DoCmd.GoToRecord __ , __ , __ acNewRec
Exit_Command16_Click:
__ __ __ __ Exit __ Sub
Err_Command16_Click:
__ __ __ __ MsgBox __ Err.Description
__ __ __ __ Resume __ Exit_Command16_Click
End __ Sub
我们更改一下即可,比如说现在有一个文本框,当然了,实际情况你可以再加代码,或者干脆用CONTROLS循环来做。
Private __ Sub __ Command16_Click()
On __ Error __ GoTo __ Err_Command16_Click
__ __ __ __ dim __ strTemp __ as __ string
__ __ __ __ strTemp=TextBox1.value
__ __ __ __ '原理很简单,先将控件值赋值给变量
__ __ __ __ '然后在添加记录后再将该变量值赋值给控件
__ __ __ __ DoCmd.GoToRecord __ , __ , __ acNewRec
__ __ __ __ TextBox1.value=strTemp
Exit_Command16_Click:
__ __ __ __ Exit __ Sub
Err_Command16_Click:
__ __ __ __ MsgBox __ Err.Description
__ __ __ __ Resume __ Exit_Command16_Click
End __ Sub
另外 __ Ctrl+'(单引号)可以复制上一条记录同一字段内容。
方法二:
| 用controls循环的代码如下:
| Private __ Sub __ AutoWriteRecord()
'自适应
On __ Error __ GoTo __ Err_AutoWriteRecord
__ __ __ __ Dim __ D __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ '创建一个变量
__ __ __ __ Set __ D __ = __ CreateObject("Scripting.Dictionary")
__ __ __ __ Dim __ i __ As __ Long
__ __ __ __ For __ i __ = __ 0 __ To __ Me.Controls.Count __ - __ 1
__ __ __ __ __ __ __ __ If __ Me.Controls(i).ControlType __ = __ acTextBox __ _
__ __ __ __ __ __ __ __ Or __ Me.Controls(i).ControlType __ = __ acComboBox __ _
__ __ __ __ __ __ __ __ Or __ Me.Controls(i).ControlType __ = __ acListBox __ _
__ __ __ __ __ __ __ __ Or __ Me.Controls(i).ControlType __ = __ acCheckBox __ _
__ __ __ __ __ __ __ __ Or __ Me.Controls(i).ControlType __ = __ acOptionButton __ Then
__ __ __ __ __ __ __ __ __ __ __ __ If __ Me.Controls(i).Name __ <> __ "编号" __ Then
__ __ __ __ __ __ __ __ __ __ __ __ '自动编号字段不可写,所以除外,可以用on __ error __ resume __ next __ 忽略
__ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ D.Add __ Me.Controls(i).Name, __ Me.Controls(i).Value
__ __ __ __ __ __ __ __ __ __ __ __ End __ If
__ __ __ __ __ __ __ __ End __ If
__ __ __ __ Next __ i
__ __ __ __ '原理很简单,先将控件值赋值给变量
__ __ __ __ '然后在添加记录后再将该变量值赋值给控件
__ __ __ __ DoCmd.GoToRecord __ , __ , __ acNewRec
__ __ __ __ Dim __ K
__ __ __ __ K __ = __ D.keys
__ __ __ __ For __ i __ = __ 0 __ To __ D.Count __ - __ 1
__ __ __ __ __ __ __ __ Me.Controls(K(i)).Value __ = __ D(K(i))
__ __ __ __ Next __ i
__ __ __ __ Set __ D __ = __ Nothing
Exit_AutoWriteRecord:
__ __ __ __ Exit __ Sub
Err_AutoWriteRecord:
__ __ __ __ MsgBox __ Err.Description
__ __ __ __ Resume __ Exit_AutoWriteRecord
End __ Sub
Private __ Sub __ AutoWriteRecord_1(strControlName __ As __ String)
'人工定义控件名
On __ Error __ GoTo __ Err_AutoWriteRecord
__ __ __ __ Dim __ D __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ '创建一个变量
__ __ __ __ Set __ D __ = __ CreateObject("Scripting.Dictionary")
__ __ __ __ Dim __ strSName() __ As __ String
__ __ __ __ strSName __ = __ Split(strControlName, __ ";")
__ __ __ __ Dim __ i __ As __ Long
__ __ __ __ For __ i __ = __ 0 __ To __ UBound(strSName) __ - __ 1
__ __ __ __ __ __ __ __ D.Add __ strSName(i), __ Me.Controls(strSName(i)).Value
__ __ __ __ Next __ i
__ __ __ __ '原理很简单,先将控件值赋值给变量
__ __ __ __ '然后在添加记录后再将该变量值赋值给控件
__ __ __ __ DoCmd.GoToRecord __ , __ , __ acNewRec
__ __ __ __ For __ i __ = __ 0 __ To __ UBound(strSName) __ - __ 1
__ __ __ __ __ __ __ __ Me.Controls(strSName(i)).Value __ = __ D(strSName(i))
__ __ __ __ Next __ i
__ __ __ __ Set __ D __ = __ Nothing
Exit_AutoWriteRecord:
__ __ __ __ Exit __ Sub
Err_AutoWriteRecord:
__ __ __ __ MsgBox __ Err.Description
__ __ __ __ Resume __ Exit_AutoWriteRecord
End __ Sub
测试:
Private __ Sub __ Command16_Click()
__ __ __ __ 'AutoWriteRecord
__ __ __ __ AutoWriteRecord_1 __ "字段1;字段2;字段4;"
End __ Sub