0

截至周三早上...

首先,我成功显示并从我的 city_table 中选择,在表单上填充 city_no

然后,我尝试使用该值在同一表单上提取/使用 city_nm 和 state_nm。

我将此编码为 city_no 的(修改后的)更新后代码。

Private Sub city_no_AfterUpdate()  
Dim got_city_nm, got_state_nm  
got_city_nm = DLookup("[city_nm]", "city_table", "[city_no]" = "city_no")  
got_city_nm = DLookup("city_nm", "city_table", "city_no='" & Me.city_no & "'")  
city_nm = got_city_nm  
got_state_nm = DLookup("[state_nm]", "city_table", "[city_no]" = "city_no")  
got_state_nm = DLookup("state_nm", "city_table", "city_no='" & Me.city_no & "'")  
state_nm = got_state_nm  
seat_no = "XXX"  
End Sub  

仍然没有任何反应,包括最后一条语句(将“XXX”分配给 seat_no)

所以我将其简化为自己尝试:

Private Sub city_no_AfterUpdate()  
seat_no = "XXX"  
End Sub  

依然没有。我显然错过了一些简单而琐碎的事情。我感谢所有的帮助。作为个人项目,我在业余时间一直在研究这个,第一次使用 Access/VBA。我有大约 4 个小时的时间来尝试从公共资源中学习这个项目。

4

1 回答 1

0

打开 VBA 窗口并单击代码的左边距。它会在边缘放置一个红点。这称为“断点”。运行您的表单并进行更改,代码将在断点处停止并以黄色突出显示该行。要继续运行代码,请按 F8。这将一次运行一行代码,并允许您准确查看正在处理的内容。

当您到达每一行代码时,将鼠标“悬停”在当前行和前一行的变量上,以查看应用程序认为该变量等于什么。您可能会发现您的想法和应用程序的想法有时是两件不同的事情。

如果代码跳过一堆行并直接进入 End Sub,则在它突出显示的最后一行出现错误。

使用这种方法是理解 VBA 是如何工作的最重要的。我已经使用它 20 年了,当我无法弄清楚哪里出了问题时,我仍然这样做。看看这是否有助于您回答自己的问题。如果没有,希望它至少能查明一行代码不能正常工作,您可以回来询问有关它的具体问题。

编辑:快速查看代码让我想知道一些事情;City_No 是 NUMBER 还是 TEXT?因为如果它是一个数字,你想摆脱变量周围的单引号。文本需要单引号,数字不需要。

进一步编辑:我认为你需要更多这样的东西:

Private Sub city_no_AfterUpdate()  
Dim got_city_nm, got_state_nm  
got_city_nm = DLookup("city_nm", "city_table", "city_no='" & Me.city_no & "'")  
Me.city_nm.Value = got_city_nm  
got_state_nm = DLookup("state_nm", "city_table", "city_no='" & Me.city_no & "'")  
Me.state_nm.Value = got_state_nm  
seat_no = "XXX"  
End Sub 

如果您尝试填写控件(即文本框)的值,则需要使用“我”来引用它。(如果它在同一个表单上)或“Forms!MyFormName”。(如果它在另一种形式上)。

于 2013-07-10T12:37:32.180 回答