【发布时间】:2021-05-12 13:29:02
【问题描述】:
我正在尝试找出循环访问我的 MS Access 表中的每条记录并使用一列数据作为另一个函数的输入参数的最佳(最有效)方法。
请看下面我使用的代码:
Public Sub FL()
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("codes")
'Check to see if the recordset actually contains rows
If Not (rs.EOF And rs.BOF) Then
rs.MoveFirst 'Unnecessary in this case, but still a good habit
Do Until rs.EOF = True
'Save CPT code into a variable
CPT = rs!CPT
CMS_Util.psps_util_json ("CPT")
'Move to the next record. Don't ever forget to do this.
rs.MoveNext
Loop
Else
MsgBox "There are no records in the recordset."
End If
MsgBox "Finished looping through records."
rs.Close 'Close the recordset
Set rs = Nothing 'Clean up
End Sub
我从 SO 中提取了这段代码,并试图通过我的公共子 CMS_Util.psps_util_json 根本没有运行来修改它。将每个 CPT 保存在变量中的循环运行良好,并且 CMS_Util.psps_util_json 在单独运行时运行完美。
我相信我的第一个错误是使用 Do Unitl 循环而不是 For Each 循环,但我在我能找到的地方碰壁了。
仅供参考,它调用的函数旨在从 CMS.gov 上的 API 提取数据,然后调用另一个解析 JSON 的函数。我认为这不会影响解决方案,但我想提供我所拥有的所有上下文。谢谢!
【问题讨论】:
-
您似乎正在尝试通过 CPT。如果是这样,您需要删除双引号。也不需要括号。
-
@BrianMStafford 一个简单的错误并且完美地工作。我将 CPT 传递给一个变量,因为 API 调用的结果被附加到另一个表中,因此“代码”表或多或少被用作限制标准。我知道这违背了我的“效率”要求,但我仍在研究一些细节。感谢您的快速回复!如何标记为已解决?
-
您只能标记一个答案,而这个问题在技术上没有答案。不过,我很高兴能够提供帮助。
-
@BrianMStafford 我开始添加更多变量,而不仅仅是 CPT,现在它只为 rs 中的最后一行运行 CMS_Util.psps_util_json ...任何想法这里可能发生了什么?
-
没有看到你修改过的代码。您可以编辑问题并添加它。