Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Excel打开Access表单中的特定记录_Excel_Vba_Ms Access - Fatal编程技术网

从Excel打开Access表单中的特定记录

从Excel打开Access表单中的特定记录,excel,vba,ms-access,Excel,Vba,Ms Access,我正在编写一个宏,它将打开Access数据库,打开表单,并根据ActiveCell的内容显示特定记录。我让它大部分工作,但我的问题是,它打开的表单只包含一条记录,因此底部的箭头按钮不会指向其他记录。有没有办法打开包含所有记录的表单,然后转到我想显示的一个?我怀疑这与表单底部的搜索框有关,但我在互联网上找不到任何相关信息 宏打开的窗体: 手动打开的表单: 您正在使用以下内容显示表单: expression.OpenForm(FormName、View、FilterName、WhereCondi

我正在编写一个宏,它将打开Access数据库,打开表单,并根据ActiveCell的内容显示特定记录。我让它大部分工作,但我的问题是,它打开的表单只包含一条记录,因此底部的箭头按钮不会指向其他记录。有没有办法打开包含所有记录的表单,然后转到我想显示的一个?我怀疑这与表单底部的搜索框有关,但我在互联网上找不到任何相关信息

宏打开的窗体:

手动打开的表单:


您正在使用以下内容显示表单:

expression.OpenForm(FormName、View、FilterName、WhereCondition、DataMode、WindowMode、OpenArgs)

对于
FormName
您正在传递
问题详细信息“
,跳过
视图
过滤器名称
参数,然后提供一个
WhereCondition
参数:

app.DoCmd.OpenForm“问题详细信息”、“[ID]=”&Abs(替换(右(搜索,4)、“-”、”)
“[ID]=”&Abs(Replace(右(搜索,4),“-”,”)
表达式就是您看到的过滤器

删除该参数,您将删除筛选器

app.DoCmd.OpenForm“问题详细信息”

侧注,不要跳过可选的位置参数,如“代码>,”-考虑使用命名参数,这样就可以更清楚地说明参数到什么参数: 现在,您需要将记录集光标移动到所需位置(可由

.OpenArgs
提供):

app.DoCmd.OpenForm“问题详情”_
OpenArgs:=“[ID]=”&Abs(替换(右(搜索,4),“-”,”)
“以下可能是表格本身,例如-表格加载(然后由我参考)
带有表单(“问题详细信息”)。RecordsetClone
.FindFirst表单(“问题详细信息”).OpenArgs
如果是的话,那就是诺玛奇
'未找到对id的反应
其他的
表格(“发行详情”).Bookmark=.Bookmark
如果结束
以

您应用了一个过滤器,如箭头旁边的单词
Filtered
所示!。单击它以删除过滤器。您可能想使用。这可以在表单_load上完成,搜索值由OpenArgs提供。)在查询中使用字段名而不是controlsname。[NCR编号]是字符串吗?然后使用
[NCR Number]='”&Replace(search,“,”)&“
(如果[NCR Number]包含引号(
),则替换是为了避免错误。
[Title]
/
[NCR Number]
搜索
始终是一个格式如下的数字:19-0001。使用
[NCR Number]
对于where条件,我只是将表单打开到一个新条目,并且我再次检查了
搜索
是否与该字段中的数据相同。我尝试使用表单上的其他文本框,结果更加混乱。
wherecondition:=“[Program]=”和“SE07”“
弹出一个输入框,询问SE07的参数值,而不是程序。格式化的数字已转换为字符串!所以你需要在搜索之前和之后的报价!SE07也一样!条件是字段的数据类型,而不是其内容-
WhereCondition:=“[NCR编号]=”&search&“”
有效,谢谢!该代码是否必须以
的形式加载
,或者是否有办法将所有代码保存在我的excel宏中?我的代码有点变化,请参见上面我编辑的问题。@breaddough如果代码调用了
OpenForm
,它将打开表单。。。它不属于
表单加载
处理程序,不属于@breadoughlas,但它可以在那里使用(都在OpenForm之后)。如果在多个位置需要,这很有用。现在我已经弄清楚了我的论点,这很有效。我只需将
表单(“问题详细信息”)
更改为app.Forms(“问题详细信息”)
Sub File_open()
Dim app as Object
Dim search As String: search = ActiveCell.Value

If (ActiveCell.Font.ColorIndex = 3) And (InStr(ActiveCell.Value, "-") <> 0) Then
    'Open NCR Record
    Set app = CreateObject("Access.Application")
    app.Visible = True
    app.OpenCurrentDatabase ("Z:\Quality\NCR Database\NCR Databse " & "20" & Left(ActiveCell.Value, 2) & "0101.accdb")
    app.DoCmd.OpenForm "Issue Details", , , "[ID]=" & Abs(Replace(Right(search, 4), "-", ""))
    Set app = Nothing
    Exit Sub
End If
Msbox ("NCR Not Found.")
End Sub
    app.DoCmd.OpenForm "Issue Details", WhereCondition:="[Title]=" & search