使用 VBA 循环记录集

2023-11-30

我正在尝试按以下方式以循环方式将销售人员 (rsSalespeople) 分配给客户 (rsCustomers):

  1. 导航到第一个客户,将第一个销售人员分配给该客户。
  2. 移至下一个客户。如果 rsSalesPersons 不在 EOF,则移至下一个 SalesPerson;如果 rsSalesPersons 位于 EOF,则 MoveFirst 循环回第一个 SalesPerson。将此(当前)销售人员分配给(当前)客户。
  3. 重复步骤 2,直到 rsCustomers 位于 EOF(EOF = True,即 End-Of-Recordset)。

自从我处理 VBA 以来已经有一段时间了,所以我有点生疏了,但到目前为止,这是我想到的:

Private Sub Command31_Click()

'On Error GoTo ErrHandler

Dim intCustomer As Integer
Dim intSalesperson As Integer
Dim rsCustomers As DAO.Recordset
Dim rsSalespeople As DAO.Recordset
Dim strSQL As String

strSQL = "SELECT CustomerID, SalespersonID FROM Customers WHERE SalespersonID Is Null"
Set rsCustomers = CurrentDb.OpenRecordset(strSQL)

strSQL = "SELECT SalespersonID FROM Salespeople"
Set rsSalespeople = CurrentDb.OpenRecordset(strSQL)

rsCustomers.MoveFirst
rsSalespeople.MoveFirst

Do While Not rsCustomers.EOF

    intCustomer = rsCustomers!CustomerID
    intSalesperson = rsSalespeople!SalespersonID

    strSQL = "UPDATE Customers SET SalespersonID = " & intSalesperson & " WHERE CustomerID = " & intCustomer
    DoCmd.RunSQL (strSQL)
    rsCustomers.MoveNext

    If Not rsSalespeople.EOF Then
        rsSalespeople.MoveNext
    Else
        rsSalespeople.MoveFirst
    End If

Loop

ExitHandler:
    Set rsCustomers = Nothing
    Set rsSalespeople = Nothing
    Exit Sub

ErrHandler:
    MsgBox (Err.Description)
    Resume ExitHandler

End Sub

我的表定义如下:

Customers
--CustomerID
--Name
--SalespersonID

Salespeople
--SalespersonID
--Name

有 10 名客户和 5 名销售人员,我的预期结果是:

CustomerID--Name--SalespersonID
1---A---1
2---B---2
3---C---3
4---D---4
5---E---5
6---F---1
7---G---2
8---H---3
9---I---4
10---J---5

上面的代码适用于 Salespeople 记录集的初始循环,但在找到记录集末尾时会出错。无论 EOF 如何,它似乎仍然尝试执行 rsSalespeople.MoveFirst 命令。

我没有正确检查 rsSalespeople.EOF 吗?有什么想法可以让这段代码正常工作吗?


rsSalespeople.EOF 并不指示您何时位于最后一行,而是指示您何时超过最后一行。

因此,当您的条件命中最后一个销售人员 EOF 为 false 时,它​​会执行 movenext (使 EOF 为 true),然后循环的下一次遍历将在 rsSalespeople 的“EOF 行”上进行操作,您无法从中提取值,因此会出现错误。

试试这个:

rsSalespeople.MoveNext
If (rsSalespeople.EOF) Then
    rsSalespeople.MoveFirst
End If
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 VBA 循环记录集 的相关文章

  • 获取每件商品的最新价格

    我有一张桌子 ItemID PurchaseDate Price 001 03 17 2013 19 00 002 03 17 2013 14 00 001 03 18 2013 13 00 002 03 18 2013 15 00 001
  • ssis将N个表从源服务器加载到目标服务器的最佳实践

    我需要将 N 个 大约 50 个 表从源数据库加载到目标数据库 每个表都与其他表不同 因此元数据不同 我想我可以使用父 pkg 来调用子 pkg 其中每个子 pkg 都有简单的结构 例如 DFT 来映射要导入的表 1 个子 pkg gt 1
  • 如何从 tarantool 中选择有限数量的记录,就像 SQL 中的 SELECT LIMIT 一样?

    我想在 Tarantool 空间上执行选择 使用过滤和限制结果 就像我可以使用简单的 SQL 查询一样 SELECT FROM users WHERE age gt 33 LIMIT 1 我怎样才能做到这一点 可以使用 Lua 和 SQL
  • 查找缺失值

    我有一个表 有 2 个重要的列 DocEntry WebId 样本数据就像 DocEntry WebId 1 S001 2 S002 3 S003 4 S005 现在我们可以注意到 在 WebId 列中 S004 丢失了 我们如何通过查询找
  • 排除任何字段中具有 NULL 值的行结果?

    我有一个像这样的简单选择 SELECT FROM table WHERE fk id 10020 它可以工作 但有一些字段为 NULL 没有模式所以做了 SELECT FROM table WHERE fk id 10020 AND NOT
  • PDO 和 Microsoft SQL:必须声明表变量“@P1”

    我正在尝试使用 PDO 中的绑定从 Microsoft SQL 数据库中选择一些条目 我正在使用的代码看起来与我在文档中找到的代码类似 但是 当我运行它时 我收到以下警告 警告 PDOStatement execute pdostateme
  • Excel HTTP 获取超时

    我们有这个小子 它只是将数据泵入远程服务器 一切都按预期进行 前几天 网络服务器发生了一次持续大约一个小时的事件 我仍然可以 PING 服务器 但 IIS 没有响应 结果 宏只是挂起等待响应 关于快速通过 失败测试或超时有什么想法吗 Sub
  • MySQL 多个 IN 条件对同一个表进行子查询

    我有多个带有子查询的 IN 条件 SELECT S name S email FROM something S WHERE 1 NOT IN SELECT id FROM tags WHERE somethingId S id AND 2
  • 访问查询——一个字段是否包含另一字段的值

    我正在尝试使用查询将表范围缩小到仅字段 全名 包含字段 名字 中的值的行 例如 如果某行的 全名 中包含 Blake Johnson 名字 中包含 John 则该行将被包含在内 但如果 全名 有 Garry Sways 并且 名字 有 Sw
  • mysql变量赋值:如何强制赋值顺序?

    由于mysql是一种声明性语言 我找不到强制赋值变量顺序的方法 采取这个查询 SET v1 0 SET v2 0 SELECT v1 v2 FROM MyTable table WHERE v1 v2 is not null AND v2
  • Worksheet_Change 事件未触发

    我的 Excel 项目在家中可以正常运行 带有Excel 2010 但不能在两台工作计算机上 使用Excel 2016 并且我怀疑Worksheet Change事件就是问题 当用户进行更改时 黄色条 屏幕截图中 应再次变为白色 但事实并非
  • 找出会话的默认 SQL Server 架构

    我需要知道正在执行某些 DDL 的 SQL 脚本中当前的默认架构是什么 我不需要设置架构 但我确实需要将对它的引用 名称或 ID 放入变量中 该脚本可能以 Windows 登录身份运行 因此以下内容还不够 SELECT name defau
  • VBA半正矢公式

    我正在尝试将半正矢公式应用到Excel函数中 它看起来像这样 Public Function Haversine Lat1 As Variant Lon1 As Variant Lat2 As Variant Lon2 As Variant
  • Hyperlinks.add VBA [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在用 VBA 编程 我想使用创建超链接hyperlink addActiveSheet 对象的方法 但是它不起作用 这是我的代码 set
  • 在打开的Word文档中找到未知的姓名和姓氏,将其复制并使用excel VBA粘贴到excel .activesheet中的单元格A12中

    你好 Stackoverflow 社区 我的目标是编写一个宏 在之前打开 活动的 Word 文档中查找未知姓名 或两个名字都写成 Firstname Secondname 和姓氏 或两个姓氏写成 Firstsurname Secondsur
  • 获取 SQL 表上未使用的唯一值

    我有一个表 其中有一列描述数字 ID 该 ID 对于所有行都是唯一的 但它不是主键 数字 ID 是有限的 假设答案可以是从 1 到 10 SELECT ID FROM TABLE ID 1 2 5 我必须 通过 UI 向用户呈现未使用的值
  • 在带有循环引用的表中插入 SQL

    我有 2 张桌子 Empleados numEmpl nombre apellido sexo telefono salario numDept Departamentos numDept nombreDept numDirect 在部门中
  • 更新查询时 ios 中出现“数据库锁定”错误

    我正在使用下面的代码更新查询 using sqlite 但我越来越 database is locked error 我尝试搜索一些 SO 链接 建议关闭数据库 但我再次执行此操作时遇到相同的错误 我已经提到过代码中出现错误的地方 cons
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N
  • 我的数据库有错误

    创建表时如下 create table Ticket ticket id integer not null primary key AirlineName varchar not null CustomerName varchar from

随机推荐

  • 用于创建文件和日期的 csv 列表的 Windows 批处理文件

    我需要创建一个 Windows 批处理文件 该文件生成一个 csv 文件 其中包含目录中所有文件的三个字段 减去批处理文件本身 Fields 文件名 可以包含逗号 创建日期 修改日期 请注意 批处理文件将从目录运行 并且应该知道为当前目录中
  • Sql Server:索引列上的下部函数

    我发现一个大问题 我已将 Lower 函数添加到其中一个表的索引列中以获取数据 该表包含超过 100K 条记录 获取记录时 CPU 使用率达到 100 我无法理解 仅仅因为 Lower 函数 怎么会发生如此巨大的变化 请帮忙 如果您确实经常
  • 使用 strpos 进行多个搜索词匹配

    我想知道是否有人可以帮助解决我似乎无法解决的小问题 我的 此刻头在转圈 好的 我有一个包含大量信息行的 txt 文件 我正在尝试匹配关键字 与这些行并显示一定数量的匹配行 我将这段脚本放在一起 虽然它有效 但它只匹配一行 如果 单词的顺序与
  • 如何解决 AttributeError:“Resource”对象在 Google API 中没有属性?

    对于完整的上下文 我是脚本编写的新手 我正在尝试使用 Google 的 API 从 Google 管理员获取完整的用户列表 但我什至很难通过build 其中的一部分 无论我标记什么service它只是没有这个属性 除了close 我的最终目
  • 如何立即验证 Silverlight 3 Datagrid 中新插入的行?

    我有一个带有自定义 DataGrid 用户控件的 Silverlight 3 工具库 该网格无法直接访问 WCF RIA 服务实体类型 因此当用户在网格为空时单击网格时 我使用反射来添加新项目 private void InsertEmpt
  • 如何在 Python 3.2 中检查整数?

    我正在尝试编写一个程序 其中用户输入一个两位数整数 输出是打印第一位数字指示的次数的第二位数字 这是我到目前为止所拥有的 number input Type two digit integer n a int number 10 b int
  • 如何在 Elixir 中获取上个月

    如何在不使用 Elixir 中的包或库的情况下获取上个月的数据 例如 如果当前日期是2018 01 25 我会得到2017 12 25 或者如果当前日期是2018 03 31 我会得到2018 02 28 2018年不是闰年 Shehary
  • 如何在 Bootstrap 3 中在移动屏幕上显示桌面版本?

    如何在 Bootstrap 3 上在手机屏幕上显示桌面版本 I don t想要一个切换桌面 移动版本的链接 我只想在移动屏幕上显示桌面版本 需要明确的是 我希望该网站能够在平板电脑上做出响应 但是在 media screen max wid
  • 使用DecimalFormat时如何防止负号?

    我正在使用一个库 它允许我使用 DecimalFormat 模式配置数字格式化方式 我需要删除减号以显示数字的绝对值 我尝试了 0 00 0 00 和 0 00 但没有成功 我可以选择任何减号 例如 0 00 0 00 但我不能根本没有符号
  • c 警告:在常量表达式中使用 const 变量在 C 中是非标准的

    当我尝试将数组初始化为常量大小时 我收到此警告 2170 D 在常量表达式中使用 const 变量在 C 中是非标准的 file h typedef struct LED Blink Pattern LEDSeq void addError
  • 确定哪些(如果有)PCI 设备插入主板 PCI(e) 插槽

    我正在用 C 编写一个程序来在许多 Windows XP 工作站上执行硬件审核 我需要确定哪些 PCI 设备是通过主板插槽连接的实际卡 而不是也使用 PCI 总线 内置于主板中 的板载设备 我可以使用各种 WMI 类成功列出使用所有 PCI
  • 当单元格具有特定值时触发电子邮件

    我是一名篮球教练 我正在创建一个仪表板来监控我的球员的社交媒体 我正在使用 IFTTT com 将所有玩家的推文实时提取到电子表格中 我正在尝试编写一个代码 如果我的一个玩家使用了不恰当的单词 它将触发该单元格向我发送的电子邮件 我觉得我走
  • 在 C# 中引用另一个字符串

    据我所知 C 中的字符串是引用类型 因此 在下面的代码中 a 应该等于 Hi 但它仍然保留其值 Hello 为什么 string a Hello string b a b Hi 许多答案指出字符串是不可变的 虽然这是事实 但这与你的问题完全
  • Java 布局不显示组件(有时)

    我正在为我的学生编写一个 MathQuiz 包括用于渲染的 JLatexMath 和用于蜂鸣器的 jinput 问题是 有时 就像每四次一样 当我启动程序时 没有任何组件可见 它们在调整 JFrame 大小后出现 首先 我想到了 jinpu
  • G Suite 中的 Google Takeout 从 Google 云存储下载

    我是一家非营利组织的 G Suite 管理员 刚刚发现了数据导出功能 这似乎就像个人帐户的外卖 导出文件已准备就绪 现在可以从 Google Cloud Platform Storage 中的存储桶下载 然而 有很多很多文件夹 并且尝试进出
  • 是否可以下载文件的特定部分? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 所以我想下载一个文件 但我不需要全部 我是否可以跳过文件的前 1 4 并下载其余部分 我已经尝试过 python youtube dl 包 有一些我认为可能有用的相关标志 但我不
  • 如何删除深度未知的深层嵌套字典中的空字段或 None 字段?

    我有一本深度嵌套字典的字典 我试图删除所有 None 或 的 k v 对 下面的字典d是输入的示例 d 1 1 1 a real value 1 2 2 None 3 3 1 3 2 None 通常 要删除字典中的空字段 命令 k v fo
  • 二维数组的运算符[][]重载

    是否可以超载 操作员两次 为了允许 像这样 function 3 3 就像二维数组一样 如果可能的话 我想看一些示例代码 你可以超载operator 返回一个可以使用的对象operator 再次得到结果 class ArrayOfArray
  • 处理java异常的最佳实践

    我开始学习 Java 并用 java 编写我的第一个实用程序类 这些类应该投入生产 当谈到处理异常时 我有点迷失 是否有关于给定代码行中有多少 try 语句的大概数字 有多少代码应该处理异常 Eclipse 的任何插件 最佳实践是在 try
  • 使用 VBA 循环记录集

    我正在尝试按以下方式以循环方式将销售人员 rsSalespeople 分配给客户 rsCustomers 导航到第一个客户 将第一个销售人员分配给该客户 移至下一个客户 如果 rsSalesPersons 不在 EOF 则移至下一个 Sal