问题标签 [ms-access-forms]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
95 浏览

ms-access - MS Access:数据未在表单中显示更新 (VBA)

我有一个表单,用户从下拉窗口中选择一个数字。该数字对应于另一个表中的一些数据,该表被加载到用户表单上的表中。当我运行此代码时,除非我单击切换按钮两次,否则不会出现更新的数据...我的代码有什么问题或缺少什么?此外,ProductDefault_SchdlNbrs 是一个子表单

0 投票
1 回答
2835 浏览

ms-access - MS Access Combobox FORM 过滤器 1) 选择下一条记录时不更新 2) 更改后不清除 3) 视图更改后保持在最后一个值

我有一个带有组合框的表单(产品 sku 及其各自的详细信息),可以在我的表单中选择并显示特定 sku 的信息。组合框工作并选择正确的记录。

组合框的问题在于 1) 使用下一个或上一个箭头选择另一条记录时不更新 2) 更改后不清除 3) 视图从表单更改为设计视图后保持在最后一个值。我需要 #1 或 #2 才能工作。如果#3 也能奏效,那将是有史以来最大的胜利!

我知道人们通常将组合框过滤器保存在表单标题中,然后只显示下面的数据。但这在这种情况下不起作用,因为它会鼓励数据输入错误。它只是一个突出显示 sku 编号的组合框。即使我也在表单上显示了 sku 编号,记录和过滤器仍然会不同步并导致混乱。

(我的表单记录源是 Tbl_UniqueSku。此表主要存储外键,因此我的组合框行源基于查询。该查询由 Tbl_UniqueSku.ID | Tbl_Category.CategoryCode | Tbl_PartNumber.PartNo | Tbl.PartNumber.PartName 组成。这有与为什么通过按钮或记录选择器推进记录时组合中显示的数据不与表单同步的原因无关.我尝试了一个仅基于一个表的虚拟简单表单,该表具有基于单个字段的组合框过滤器同一张桌子,我有同样的问题。)

1:

如果我使用其他记录选择按钮导航到表单中的不同记录,则此 cbo 选择器中的数据(sku 编号)不会更新。

所以这个组合框中显示的 sku 与我的表单不同步,除非我只使用组合框进行导航。

我的 sku 按时间顺序排列:1001、1002、1003 等。因此,专门使用组合框导航到每个后续记录是没有意义的。将组合框和下一个/上一个箭头作为导航到所需 sku 的选项是有意义的。

我已经在我能想到的表单和 cbo 的所有事件属性中尝试了宏和 vba。我已经尝试过 requery、refresh、value = null、value = id 的所有变体。没有结果。

2:

如果组合框不能反映当前记录,那么我至少希望在更新后显示 NO 值。无论它不显示与表单记录不同的 sku 需要什么都是我会接受的结果。我已经尝试了所有我能想到的从这个角度解决问题的方法,但我也一无所获。

3:

另一个问题是,当我从表单视图来回切换到设计视图时,此表单的组合框过滤器停留在最后一个选定的值上,而表单始终显示我的表中的第一条记录。再说一次,这两个不同步。我还没有准备好拆分前端和后端,因为我仍在设计数据库,但我还必须进行数据输入。在这一点上,拆分它会降低我的效率。

我研究这个问题的时间比我愿意承认的要长。我发现一些人解决了这个问题,但没有可接受的解决方案。或者也许我遇到的编程解决方案是有效的,但我只是将理论应用于实践。我需要一个语法来参考。

这是我在研究中找到的最接近的帮助

提供半点帮助的评论者是 bhammerstrom,他说:“我所做的是:在组合的 AfterUpdate 事件中,取消隐藏直接放置在同一个文本框中的文本框 (me.txt.visible = True)点在 cbo(除了让向下箭头可见)。文本框绑定子表单中的字段以显示当前信息。

我尝试了这个,但焦点仍然在更改后的 cbo 上,因此未隐藏的文本框出现在组合框后面,直到我将光标移动到另一个字段。我已经对其进行了破解,但无法弄清楚如何对 cbo 进行编程以在更新后放松焦点。谷歌永远。没有什么。如果我能让它发挥作用,那么#2就足够了,但我仍然对#3空手而归。

这个链接线程上的其他答案听起来很有希望,但是当我尝试从提供的信息中尽我所能时,我没有运气。这可能是个好建议,但我太笨了,无法使用它,需要更彻底的指导,希望有语法参考。

我能想到的唯一没有尝试过的事情是在我的 Tbl_UniqueSku 中创建一个新列,并在那里存储空值。然后在我的组合框行源查询中,我可以添加该字段。然后在我的表单属性中,我可以将该空存储列设置为组合框的显示列,因此在选择后它始终为空。但是这种解决方法似乎完全亵渎了数据库应该代表的一切。

请帮我!

0 投票
1 回答
433 浏览

vba - 如何将表中的静态值和记录作为列表项添加到 VBA 中的组合框

我有一个组合框,可以从查询中获取其列表项。但除了这些项目之外,我还需要一个在所有情况下都可用的静态选项。

我尝试以天真的方式这样做:

但最终出现此运行时错误

RowSourceType 属性必须设置为“值列表”才能使用此方法。

我有一半的预期。

这有什么技巧吗?我想我可以在我的表集中添加一个虚拟记录并更改查询,但这会相当难看,我不喜欢它。

0 投票
0 回答
625 浏览

vba - MS Access 2016 vba:从表单字段(文本框)传递的空值

我遇到了一个奇怪的情况:

我有一个带有 2 个文本框的简单表单。第二个在更新后触发了 vba 代码。例如:在第一个字段中输入值,ENTER,在第二个字段中输入值,ENTER,代码开始。

代码最初从文本框中获取值并将它们分配给字符串变量(预先声明为字符串),例如:

问题是,在上面的行之后,test1 变量似乎是空的。它似乎只在我输入时发生,例如这个字符串:

073QB8KJ2D00A4X

效果很好,当输入 CNB0K2W5JK 工具是一个简单的序列号比较。

只是为了测试,我在代码中输入了这一行:

在逐步模式下运行并将鼠标悬停在“aaa”上时,我得到:aaa= 然后什么也没有。甚至没有像 aaa="" 这样的单个“”。只是aaa=

重试多件事后 - 我相信这与我输入的值有关:

073QB8KJ2D00A4X

可能是,对于访问/vba,它是一些控制字符串吗?

我现在只是傻...

提前感谢您的帮助

马立克

ps 源字段是纯文本框。这是代码:

Dim user As String
Dim 1stSN As String
Dim 2ndSN As String
1stSN = Me.frmSSN.Value 2ndSN = Me.frmHPSN.Value

然后这些值被用作 SQL 查询的一部分。问题是 - 在这种情况下 - 查询不起作用,因为 sql 字符串看起来像:

“Select * From sbo_SerialSource where SN like”,“like”之后什么都没有。调试显示正确的值(带有序列号),但查询失败并显示“语法错误”消息。似乎正在创建/添加一些奇怪的“控制字符”。

而已。而且我必须使用这些“奇怪的”序列号,因为它们是来自供应商的。

0 投票
0 回答
40 浏览

ms-access - 如何自动增加采购订单号,并将其链接到我的主表?

我面临这个问题几个星期,我正在使用 MS Access。

我的问题是我想让我的 PO 号码自动增加,但是 PO 号码不是我的主键,而是 ID 是我的主键。我使用 ID 作为我的主要,因为在一个 PO 下,它将有多个制造。

我构建我的流水号表如下: ID Autonumber PO Number Shorttext

设置 PO 编号后,我想将其链接到我的主表,以便我能够搜索 PO 编号,并且存储在我正在搜索的 PO 编号下的所有数据将显示在我的子表单上。我还希望在我单击表单上的“添加”按钮之前,采购订单号不会增加。我怎样才能做到这一点?
谢谢你。

0 投票
0 回答
32 浏览

ms-access - 访问依赖于多个其他的级联组合框

是否可以有一个依赖于多个因素的级联组合框?例如,Item2 基于 Item1Type 和 Item1Size。我现在让 Item2 依赖于 Item1Type,但我希望它更精致。

0 投票
1 回答
5768 浏览

vba - 获取子表单中选定行的ID

我有一个带有子表单的父表单,我希望用户能够从子表单中选择一条记录,然后单击父表单上的一个按钮,这将启动一个“新”表单,其中包含与从子表单中选择的记录。

我将如何在 Access 2013 中执行此操作?

0 投票
1 回答
134 浏览

vba - 如何从报表上的选定文本框中提取文本?VBA

我有一个报告(rptCourses),其中包含 170 个包含课程名称的文本框,这些文本框是从访问表(tblCourses)中提取的。当用户单击其中一个课程名称文本框时,将加载一个包含文本框 (txtboxCourseTitle) 的表单 (frmRateCourse),该文本框本质上是一个标题,理想情况下将包含所选报告文本框的课程名称。

我的问题是:如何从选定的报告文本框中获取文本并将该文本输入到加载的表单的文本框中?

如果这个问题已经存在,我深表歉意!并提前感谢您的任何帮助!

0 投票
1 回答
157 浏览

database - 无法将值从一种形式传递到另一种形式 - 女士访问

我有多个 VBA 表单,第一个表单从组合框中获取用户名并将其保存在全局变量中,代码如下:

现在在我的另一个表单中,我有一个组合框,我想在加载表单时自动填充该变量的值,我使用以前的表单保存,下面是代码:

但它不起作用,它什么也没做。我想在所有形式中使用这种代码。

有人可以建议我的代码中的错误是什么,我对 VBA 还很陌生。提前致谢 :)

0 投票
1 回答
875 浏览

sql - Access VBA 的 Listbox.Requery 命令清除 ListItems

我有一个访问表单,我希望用户在其中选择一个 AwardNumber。当他们选择奖项时,该奖项的相关文档会显示在“未完成”或“完成”列表框中。然后我希望他们能够将项目从一个列表移动到另一个列表。列表框是单选的。

在此处输入图像描述

这是后端:
不完整的列表框(在设计中说未绑定)有 3 列。Bound 列是 1,但第 1 列和第 3 列的宽度为 0,因此被隐藏。列表框还具有以下 RowSource:
SELECT DocTbl.DocID, DocTbl.DocTitle, DocTbl.DocLink FROM DocTbl WHERE ((DocTbl.Complete <> Yes) AND (DocTbl.AwardNumber = Forms!Select_Doc_To_Code!Award_CBox.Text)) ORDER BY DocTbl.DocID

(完整的 ListBox 具有相同的功能,只是它不是DocTbl.Complete <> Yes,而是DocTbl.Complete = Yes。)

当他们在 ComboBox 中选择 AwardNumber 时,有一些 VBA 运行以下命令来填充列表,这可以按预期工作:
Me.Incompletes.Requery Me.Completes.Requery

这两个按钮触发代码以“移动”项目。这是顶部按钮的代码,用于将文档从“未完成”列表框“移动”到“完成”列表框(即,将文档的“完成”值设置为“是”,然后重新查询列表框)。指示的行是出错的地方:

换句话说,UPDATE 查询有效(我在表中看到更新的数据),但是当我尝试重新查询两个 ListBox 以刷新它们时,所有项目都会从两者中消失!。此外,如果我从 ComboBox 中选择另一个奖项,然后重新选择相同的奖项,列表会再次正确填充,只需运行相同的 .Requery 命令!

我试过了Me.RefreshMe.Recalc。我也尝试过再次设置 RowSource。我想知道它是否过早地重新查询;我已经放置了断点和 DoEvents,所以我认为这不是时间问题,但可能更多的是代码需要停止运行以重新查询工作。这是没有意义的,因为重新查询代码。

我知道还有其他方法可以做到这一点(我已经尝试过但失败了),但我真的很想知道为什么这种方法不起作用。

提前致谢!!