我正在使用 MS-ACCESS 数据库。从我使用的项目中并提出了一些其他问题,表 NOEUDS 和 INFRA(应该更新):
表 INFRA:
RECNO - NOEUD - SECURISE
00000008 C002 F
00000005 C009 F
00000001 C035 F
00000002 C001 F
00000003 C036 F
00000006 C012 F
00000007 C013 F
表NOEUDS:
NOEUD TYPE_MAT N_AMONT
C021 COF 100
C022 COF 229
C023 COF 130
C002 COF 111
我想创建一个查询,在 NOEUDS 上检查 INFRA 表中缺少的节点 C*,如果没有,则应插入一个新的。问题是 RECNO 字段用作控件并且不能复制(不是主键,因为所有数据库只是控制它的程序的存储库)。所有字段都是文本,因此 RECNO 是使用 HEX 数字的连续计数,如图所示。
我使用查询来选择:
SELECT (SELECT MAX(CINT(INFRA.RECNO))+1 AS N FROM INFRA),
NOEUDS.NOEUD, "F" AS Expr2
FROM NOEUDS
WHERE (((NOEUDS.NOEUD) Like "C*"
And (NOEUDS.NOEUD) Not In (SELECT NOEUD FROM INFRA)));
结果是:
9 C021 F
9 C022 F
9 C023 F
应该:
9 C021 F
A C022 F
B C023 F
我需要一些帮助,所以我可以在 00000019 传递到 0000001A 之后以十六进制计数插入正确的 RECNO 等等。
提前致谢
更新 1:
我们使用的程序使用 Access 数据库作为存储。当我使用该程序添加 noeud 时,我必须使用地图所需的菜单和构建信息插入更多信息。问题是很多信息是多余的,程序无法自动处理。我正在尝试使用查询来工作并插入可能的信息。
每次我在 noeuds 表中插入一个 noeud 时,都需要在 INFRA 表中插入一行,仅使用 RECNO(从最后一个开始依次计数)、NOEUD 和其他一些信息(以完成 autocad 表标记)。由于我有数百台 Cxxx、Bxxx、Pxxx、Gxxx 设备,我为每个项目节省了几个小时的无聊工作。
我需要帮助计算为 NOEUDS 表中找到的每个 NOEUD 添加 RECNO 的顺序方式,这些 NOEUD 将插入 INFRA 表中。
更新 2:
我正在手动插入每个 noeud。是否有可能以一种方式加入,它从我想要插入的 noeuds 中获取列表,而不是 1 对 1 进行它获取列表并按顺序执行?
2个查询是:
我想在 INFRA 表中添加的装备:
SELECT NOEUDS.NOEUD FROM NOEUDS WHERE (((NOEUDS.NOEUD) Like "C*" And (NOEUDS.NOEUD) Not In (SELECT NOEUD FROM INFRA)));
手动插入:
插入 INFRA (recno, NOEUD, SECURISE) SELECT (SELECT Right(String(8, "0") & Hex(Max(Val("&H" & RECNO)) + 1), 8) AS N FROM INFRA), NOEUDS .NOEUD, "F" AS Expr2 来自 NOEUDS WHERE (NOEUDS.NOEUD=[INSERT CHAMBRE?]);