我正在使用Microsoft访问权限,并且我希望在单击按钮时将表单打开到特定ID。我可以在Do.open表单命令中指定id。下面的代码打开一个表单,然后打开一个对话框,要求输入id。任何想法?
Private Sub button1_Enter()
Dim recordID As Integer
recordID = Me.CurrentRecord
DoCmd.OpenForm "Form3", , , "ID = recordID"
End sub
答案 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 窗体上的控件。然后是另一个 & 和另一组双引号和单引号:“'”。