access新手来看:如何重复上一条记录?

新手来看:如何重复上一条记录?

问题:

| 如何重复上一条记录?

有一个窗体,上面有多个文本框和组合框,因为目录这笔资料与下一笔资料大部门都是一样的,能不能利用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


http://www.access911.net 站长收藏

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus