外部程序

时间:2016-04-02 11:32:47

标签: access-vba

我的Access数据库中有一个表,可以跟踪我的工作。我有一个基于此表的查询的表单。在我的表中有一个名为[file_path]的字段。这是一个控制表单上的Web浏览器的字段。

我希望在更新表单上的字段[File_path]时更新此字段[customer_Id]。应该更新它以反映客户名称和文件路径,例如C:\Users\Windows8\Documents\Projects\Doe John

如何将[Customers]![Last_Name][Customers]![first_name]拉入字段[file_path]中的字符串?

我认为我必须使用VBA代码,但不确定如何。我从这开始:

Private Sub Customer_AfterUpdate()
Me.File_path = Me.Last_Name
End Sub

我知道这是一个微弱的开端。有人知道如何帮助我吗?如果我的问题不明确,请告诉我。

除此之外,上述代码在Private Sub Customer_AfterUpdate()中返回无效的外部过程。为什么呢?

1 个答案:

答案 0 :(得分:0)

Me指的是表单。你是正确的,使用Me是最好的做法(速度,编码的简易性等),但是当我开始或甚至现在在一个复杂的应用程序中我喜欢写出来,因为这提醒我不要像这样犯一点错误。或者,也许你的记忆力比我的好,在这种情况下忽略并继续阅读。

[file_path]在表中,因此您需要在表中访问它。您的代码在表单中查找它,并意识到它不在Me内,并抛出此错误。

我将在下面给你一行代码,这对你来说应该是一个很好的起点,但我想你可能需要检查你的召唤事件。 AfterUpdate很酷,因为它似乎是自动发生的,但我不认为您希望每次更新整个“客户”表单中的任何内容时更新您的字段。如果有一个总是最后更新的特定文本框(last_name?),你可以试试那个,但是我会紧张的想要总是确保这是我更新的最后一个...我的意思是,如果有一天我偶然在customer_id之前做了这个名字,我以后会对我的手产生一些严重的困惑。我可以建议一个命令按钮,而不是使用Click事件吗?

无论您最终使用什么活动,您在活动中只需要一行代码。有很多方法可以做到这一点。我可能会提出CurrentDb.Execute "update " & myAwesomeTableNameHere & " set file_path='"C:\Users\Windows8\Documents\Projects\" & forms("customers").controls("last_name").text & " " & forms("customers").controls("first_name").text & "' where customer_id='" & forms("customers").controls("customer_id").text & "'"

的建议

现在,谨慎一点:数据是珍贵的,美丽的。付钱给你的人的姓名更是如此。通过自由键入表单上的文本框来更改预填充表中的数据听起来像是等待发生在我身上的灾难。如果是我,我会1)经常(简单)进行备份,或者2)在向表格写任何内容之前以多种方式验证您的条目。