我正在使用Access 2007并尝试构建数据库。我想知道是否可以在“主菜单”表单上打开两个不同的按钮,打开相同的“数据输入”表单。但是,一个按钮会自动转到新的空白记录以进行数据输入,另一个按钮会提示用户输入特定的ID#(与表单中的字段相关联),然后表单将在该记录上打开。这将用于更新该特定记录。
这可能吗?我是VBA代码的初学者。如果可以使用更高版本的Access而不是2007,请告知我们。
答案 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
使用不同的选项来实现两个目标。
DoCmd.OpenForm FormName:="YourForm", View:=acNormal, DataMode:=acFormAdd
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
}