VB在特定记录上打开表单

时间:2012-11-22 11:00:47

标签: ms-access access-vba

我正在使用Microsoft访问权限,并且我希望在单击按钮时将表单打开到特定ID。我可以在Do.open表单命令中指定id。下面的代码打开一个表单,然后打开一个对话框,要求输入id。任何想法?

Private Sub button1_Enter()
Dim recordID As Integer
recordID = Me.CurrentRecord
DoCmd.OpenForm "Form3", , , "ID = recordID"
End sub

4 个答案:

答案 0 :(得分:6)

首先,改变:

recordID = Me.CurrentRecord

要:

recordID = Me.ID

其中Me.ID是当前表单(Microsoft Access - get record id when button is clicked)上的字段或控件的名称。

当您引用变量时,请将其放在引号之外:

DoCmd.OpenForm "Form3", , , "ID = " & recordID

对于ID来说这是好的,这是一个数字,但它会因文本和日期而变得更复杂,因为你需要分隔符。只要sometextvar不包含引号,这将很有效:

DoCmd.OpenForm "Form3", , , "Atext = '" & sometextvar & "'"

否则

DoCmd.OpenForm "Form3", , , "Atext = '" & Replace(sometextvar,"'","''") & "'"

日期需要#

DoCmd.OpenForm "Form3", , , "ADate = #" & somedatevar & "#"

为了避免语言环境出现问题,最好将格式设置为年,月,日,所以:

DoCmd.OpenForm "Form3", , , "ADate = #" & Format(somedatevar,"yyyy/mm/dd") & "#"

答案 1 :(得分:1)

我试过我也一样,确保你给id的名字是表格中使用的名字,而不是DB! IE,我的ID在数据库中为id,但在我的表单中为pc_id

答案 2 :(得分:0)

该解决方案如何?

Private Sub Command10_Click()
On Error GoTo Err_Command10_Click
    Dim IDnr As String
    Dim stDocName As String
    Dim stLinkCriteria As String
    IDnr = InputBox("Enter ID")
    stDocName = "FORM_MASTER"
    stLinkCriteria = "[ID]=" & IDnr
    DoCmd.OpenForm stDocName, , , stLinkCriteria
    Exit_Command10_Click:
    Exit Sub
Err_Command10_Click:
    MsgBox Err.Description
    Resume Exit_Command10_Click
End Sub

答案 3 :(得分:0)

当我想从另一个表单(称为启动表单)打开表单(称为目标表单)并且我希望过滤目标表单中查看的记录(即限制)时,以下是对我有用的方法仅指向 Launch 表单中当前的记录,以及我想用于过滤记录的字段是文本(或“字符串”)数据类型:

私有子cmdOpenDestinationForm

DoCmd.OpenForm "frmDestination",,,"[FieldName]=" & "'" & Me.ControlName & "'"

结束子

[FieldName] 指的是 Destination 表单中的一个字段。 [ControlName] 指的是 Launch 窗体上的控件(如文本框)。 “Me”也指的是 Launch 表单,因为这是单击命令按钮时打开的表单(您可以省略它)。实际上,此代码告诉 Access (1) 打开 frmDestination,(2) 搜索“FieldName”字段,直到找到与 Me.ControlName 具有相同值的记录,以及 (3) 过滤 Destination 表单以便只显示那一条记录。

棘手的部分是所有那些双引号 ( " )、单引号 ( ' ) 和与号 (&)。 请注意,[FieldName]= 具有开始和结束双引号:“[FieldName]="。并且不要忘记 = 符号。接下来,后面跟着&“'”。那是一个&符号、一个双引号、一个单引号和另一个双引号。根据我的经验,引号之间不能有空格。它们必须如图所示一起运行。然后是另一个与号和 Launch 窗体上控件的名称,该控件的名称具有要在 Destination 窗体上的 [FieldName] 中定位的值:& Me.ControlName。而且,如前所述,如果您愿意,您可以省略我。我使用它是因为帮助我记住 ControlName 是 Launch 窗体上的控件,而不是 Destination 窗体上的控件。然后是另一个 & 和另一组双引号和单引号:“'”。

相关问题