小编Ern*_*roy的帖子

在VBA中深层复制或克隆ADODB记录集

我一直在寻找一种在VBA中复制或复制记录集的方法.我的意思是,让不正确的数据彼此独立.

我试过了

Set copyRS = origRS.Clone
Set copyRS = origRS
Run Code Online (Sandbox Code Playgroud)

当我使用任何方法时,我无法修改一个记录集而不修改另一个记录集.所以在这个例子中:

  1. 我创建了一个记录集
  2. 我用John命名记录集
  3. 我克隆了记录集
  4. 我修改克隆的那个
  5. 检查结果

码:

Dim origRS As Recordset, copyRS As Recordset
Set origRS = New Recordset
'Create field
origRS.Fields.Append "Name", adChar, 10, adFldUpdatable
origRS.Open
'Add name
origRS.AddNew "Name", "John"
'Clone/copy
Set copyRS = origRS.Clone
'Change record in cloned/copied recordset
copyRS.MoveFirst
copyRS!Name = "James"
'This should give me "JamesJohn"
MsgBox copyRS.Fields(0).Value & origRS.Fields(0)
Run Code Online (Sandbox Code Playgroud)

但不幸的是,对我来说,这会修改两个记录集

我的问题是:

有没有办法从另一个记录集复制记录集,然后彼此独立地修改数据(没有循环)?

我知道你可以通过一个循环来做到这一点,但是没有别的办法吗?

excel vba adodb recordset excel-vba

13
推荐指数
1
解决办法
7465
查看次数

使用Oracle SQL作为匹配引擎

我不确定我能找到什么是可能的,但它的思考肯定很有意思.我的目标是优化仓库的布局,但此问题适用于其他方案.

我有一个位置列表,到门的距离和它们所在的区域(例如区域A =冷藏,区域B =环境):

Location    Zone    Distance
A1          A       1
A2          A       3
A3          A       5
A4          A       7
B1          B       2
B2          B       4
B3          B       6
B4          B       8

我还有一个产品清单,它们被挑选的次数和区域(区域A =需要冷藏的产品,区域B =需要冷藏的产品,区域A/B =没有限制的产品)

Product     Zone    Pick per day
Milk        A       8
Lettuce     A/B     7
Bread       B       6
Chocolate   B       5
Tomatoes    A/B     4
Dry Pasta   B       3
Beef        A       2
Chicken     A       1

如果我只对优化选择产品的距离感兴趣,我会把最挑选的最接近门.我通过他们的ROW_NUMBER和ORDER BY Distance和Pick加入两个表来完成这个.

但是,我真的非常关心产品区域,因为我不能将面包存放在冷藏区域(它可能会变得潮湿).此外,我知道生菜可以存放在冷藏或非冷藏区域.

此外,应该有条件确保所有产品都分配一个空间(8个空格8个产品)

手动完成我会得到.

       
Location    Zone    Distance    Product     Zone    Pick per day
A1 …

sql oracle iteration mathematical-optimization

6
推荐指数
1
解决办法
190
查看次数