【问题标题】:VBA While loop using an SQL statement as my WhileVBA While 循环使用 SQL 语句作为我的 While
【发布时间】:2023-03-19 08:59:01
【问题描述】:

我正在一些电子表格后面编写一些代码,我需要循环一些代码,例如从数据库中获取数据并执行一些公式并将数据移动到新工作表中。我从数据库中获取数据的代码是获取多个列中的所有值,其中未报告数据并且具有相同的文件名(数据来自文件),我有一个字段说明是否它由一个简单的“Y”或“N”和一个包含它来自的文件名的字段来报告。

所以我需要一段时间,“WHILE”还有一些尚未报告的数据执行我的其余代码(这包括我所说的第一个 SQL 语句,因为这会获取尚未从每个单独的文件名报告的数据)。

我已经尝试了好几天,但一直无法弄清楚如何,所以非常感谢任何帮助。

更新:

数据库有一个名为 datareported 的实体,可以是“N”或“Y”,也可以是 datadatfile,它是数据来源的名称。

所以,

WHILE datareported = 'N' THEN
"SELECT (the data rows I want)
FROM tbldata
WHERE datareported='N' and datadatfile =
(SELECT min(datadatfile)
    FROM tbldata WHERE datareported='N')"

这意味着我会循环遍历我的其余代码,同时有尚未报告的数据,并且只引入同名的数据(来自 datadatfile ),以便可以在该数据上运行代码。

这基本上就是我想要做的,这也是我尝试过的。我尝试了其他一些方法,通常会返回类型不匹配的结果。

干杯,

山姆

【问题讨论】:

  • 我认为我们需要更多细节。给我们写一些伪代码怎么样?
  • 你能给我们一些代码吗?你尝试过什么,你期望什么,你得到了什么?

标签: sql vba loops while-loop


【解决方案1】:

解决方案需要更多信息,但这可能有助于将您推向正确的方向...

'ws1 = worksheet object...
bC = true
cnt1 = 2 ' starting row
Do While bC

If ws1.cells(cnt1, 1) = "N" Then
'Run your SQL here
Else
'Already reported...
End If
cnt1 = cnt1 + 1
If 'you hit the last row on your worksheet set bC = False to exit loop      
Loop

错过了更新...这无济于事,抱歉。

【讨论】:

    猜你喜欢
    • 2017-03-09
    • 2019-07-26
    • 2013-08-16
    • 2015-05-19
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    相关资源
    最近更新 更多