【问题标题】:Copying a record in VBA在 VBA 中复制记录
【发布时间】:2009-09-24 01:08:39
【问题描述】:

我使用的产品装在 2000 磅的袋子里并放在托盘上。制造此产品时,它有许多不同的元素进行测试,并且每个测试都有一个放置数字数据的字段。然后为这些测试记录中的每一个分配一个编号,例如 L20444。

现在我们有能力将 2000 磅的麻袋转换成 80 个 20 磅的袋子。一个托盘上只能装 40 个 20 磅的袋子,现在取一个托盘 L20444 并制作两个编号为 L20444 的托盘。这会导致库存问题,因为编号 L20444 只能分配一个仓库位置,而不是两个。

所以我的老板们要创建一个几乎相同但差异足以将第二个托盘放入仓库的编号。第二个托盘现在将是 L20444B。它仍将具有所有相同的测试编号,并且是原始 L20444 的“副本”。

我的问题是我可以把记录 L20444 并复制该记录的所有数据,然后将其保存为 L20444B 以便可以将其放入仓库中。

那么 VBA 是否可以复制记录,重命名,然后将其作为新记录保存在同一个数据库中?

任何帮助将不胜感激,谢谢。

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

    如果我没看错的话,听起来你想要一条 SQL 语句来创建一条新记录。

    您使用的是 Microsoft Access?我建议首先在查询编辑器中创建一个执行此操作的查询。这将是一个追加查询,类似于:

    INSERT INTO TableA ( ID,col1, col2 )
    SELECT [ID] & "B" AS NewName,col1, col2
    FROM TableA
    WHERE (([ID]="L20444"));
    

    首先测试它以确保它正在执行您想要的操作,并将“L20444”作为参数([OldID] 或其他内容)。然后在执行此查询的 VBA 脚本中添加一些代码。当您运行它时,它应该会弹出询问您的 OldID。

    然后您需要学习如何从 VBA 执行参数化查询。 像这样的:

    Set qdf1 = CurrentDb.QueryDefs("myQuery")
    qdf1.Parameters("OldID") = theOldID
    qdf1.Execute
    

    未经测试,如果我的语法不太正确,请在 VBA 帮助中搜索 QueryDefs。

    【讨论】:

      【解决方案2】:

      为什么不创建一个新表来跟踪两个托盘的位置(以及新编号),该表链接回(使用外键)原始库存的单个记录桌子?

      这应该行得通,并且将避免否则将成为冗余数据的噩梦。

      【讨论】:

      • 这很难解释,但我需要它在同一张桌子上。所以这就像两个不同的数字得出了相同的测试结果。 L20444 和 L20444B,两个不同的记录,但测试结果相同。我不知道我是否解释清楚,但这是我的老板想要的。我希望这会有所帮助。
      • 我很欣赏这个答案,我明白你所说的冗余。我想那样做,但我的背靠在角落里,否则我无法说服老板。谢谢,就像我说的,非常感谢
      猜你喜欢
      • 2014-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-15
      • 2017-09-20
      • 2012-08-13
      • 1970-01-01
      相关资源
      最近更新 更多