访问,使用按钮以不同方式打开相同的表单

时间:2014-10-14 15:52:20

标签: forms vba ms-access access-vba ms-access-2007

我正在使用Access 2007并尝试​​构建数据库。我想知道是否可以在“主菜单”表单上打开两个不同的按钮,打开相同的“数据输入”表单。但是,一个按钮会自动转到新的空白记录以进行数据输入,另一个按钮会提示用户输入特定的ID#(与表单中的字段相关联),然后表单将在该记录上打开。这将用于更新该特定记录。

这可能吗?我是VBA代码的初学者。如果可以使用更高版本的Access而不是2007,请告知我们。

3 个答案:

答案 0 :(得分:3)

在表单上创建两个按钮。我们将它们命名为 addRecBtn openRecBtn 让我们说您要打开的表单是tmpFrmName。因此第一个按钮将在数据输入模式下打开表单,第二个按钮将以正常编辑模式打开表单。

代码应该是类似的,

Private Sub addRecBtn_Click()
    DoCmd.OpenForm "tmpFrmName", DataMode:=acFormAdd
End Sub

第二个表单首先必须获取您要打开的号码,例如我们称之为numberID。所以你的代码就是。

Private Sub openRecBtn_Click()
    Dim numID As Long

    numID = InputBox("Please enter the ID : ")

    If DCount("*", "yourTable", "numberID = " & numID) <> 0 Then
        DoCmd.OpenForm "tmpFrmName", WhereCondition:="numberID = " & numID
    Else
        MsgBox "The numberID : " & numID & " does not exist, please try again !"
    End If
End Sub

答案 1 :(得分:2)

您可以使用DoCmd.OpenForm使用不同的选项来实现两个目标。

  1. &#34;一个按钮会自动转到新的空白记录以进行数据输入&#34;
  2. DoCmd.OpenForm FormName:="YourForm", View:=acNormal, DataMode:=acFormAdd
    
    1. &#34;另一个按钮提示用户输入特定ID#(绑定到表单中的字段),然后表单将打开该记录&#34;
    2. Dim strWhere As String
      strWhere = "[id]=" & Me.txtId
      Debug.Print strWhere ' <- inspect this in the Immediate window
      DoCmd.OpenForm FormName:="YourForm", View:=acNormal, WhereCondition=strWhere
      

      第一个表单包含一个名为 txtId 的文本框,其中包含您希望以第二种形式显示的ID值( YourForm )。

答案 2 :(得分:0)

是的,这是可能的。

我的建议是用几个函数来做 - 将“共享”功能放在一个(例如打开表单),然后为差异,制作两个调用共享函数的函数

例如

function openForm()
{
    //Do open form stuff
}

function promptForID()
{
    openForm();
    //Do stuff that prompts for ID
}

function blankRecord()
{
    openForm();
    //Do stuff that sets up a blank record
}