【问题标题】:Inserting into table using values from another table involving a unique filed使用涉及唯一字段的另一个表中的值插入表中
【发布时间】:2021-11-03 00:38:01
【问题描述】:

给我带来问题的字段是 unique required 字段,在 tbl1 上称为 ItemNo。我想从tbl2 复制ItemNo 字段值并将其添加到tbl1 ItemNo 字段中,但在字符串末尾添加D。所有ItemNo 字段的格式为Text

tbl1 目前看起来像:

ID   ItemNo   ItemDescription   ....
1    001      Epoxy resin       ....
2    002      Wood glue         ....

tbl2 目前看起来像:

ID   ItemNo   ItemDescription   ....
1    001      Epoxy resin       ....
2    002      WD40              ....

预计 tb1 更新后的样子:

ID   ItemNo   ItemDescription   ....
1    001      Epoxy resin       ....
2    002      Wood glue         ....
3    001D     Epoxy resin       ....
4    002D     WD40              ....

可能是这样的:

CurrentDB.Execute "INSERT INTO tbl1 SELECT * FROM tbl2 ...."

我可以使用DAO 完成任务,但想知道它是否也可以使用 SQL。

Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Set rs1 = CurrentDb.OpenRecordset("SELECT*FROM tbl1")
Set rs2 = CurrentDb.OpenRecordset("SELECT*FROM tbl2")

With rs2
.MoveFirst
Do Until rs2.EOF
rs1.AddNew
rs1.Fields("ItemNo").Value = rs2.Fields("ItemNo").Value & "D"
....
....
rs1.Edit
rs1.Update
rs2.MoveNext
Loop
End With
rs1.Close
Set rs1 = Nothing
rs2.Close
Set rs2 = Nothing

【问题讨论】:

  • 不必在 DAO 示例中列出所有要复制的字段,在设置第一个字段后,您可以对其他字段使用循环(类似于For lngLoop1=1 to rs1.Fields.Count-1:rs1.Fields(lngLoop1)=rs2.Fields(lngLoop1):Next lngLoop1)跨度>
  • @Applecore 这确实有效,但对于很多记录来说速度很慢。 SQL 语句似乎更快,但看起来我必须明确定义语句中的所有字段。

标签: sql vba ms-access


【解决方案1】:

嗯。 . .你似乎想要:

insert into tbl1 (itemNo, itemDescription)
    select itemNo & 'd', itemDescription
    from tbl2;

这假定id 是自动分配的。

【讨论】:

  • @Godon Linoff 谢谢!我是否需要在语句中指定所有其他 28 个剩余字段?
  • @Fil 。 . .如果你想插入它们,那么可以。
  • 谢谢。我以为我可以不必将所有其他列添加到语句中,但看起来我实际上必须这样做。谢谢工作正常!
猜你喜欢
  • 1970-01-01
  • 2015-09-25
  • 1970-01-01
  • 1970-01-01
  • 2015-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多