我想根据ms access中的表单值生成id。然后,对于生成的每个id,根据Map表在末尾添加另外4个数字,创建一组id,表示不同时间点的不同八位字节(基于初始id和Map表的12个id)。
例如,如果基于表单值生成的id是123456,我想再添加四个数字并创建一组id,比如从Map表中。比如,
123456**1111**
123456**1112**
123456**1113**
等等。
到目前为止,我在每个主id的末尾加上四个数字,生成一组12个id。
我是access的初学者,我尝试过一些代码:
UPDATE Table1 SET GenID = UPDATE Table1 SET Table1.GenID = t1 (SELECT Map.V FROM MAP as t1)
但是,我得到一个错误,access没有将map识别为有效的字段或表达式。我能把这个问题分解成这个问题。但无法找到进一步的方法并设计查询。
示例数据:(short\u id和long\u id表使用它们下面的Map表,如图所示。)
短id表:
----------------------------------------------------
ID | Subject_ID | Organ_Type | Category | Short_ID
-----------------------------------------------------
1 | 100 | Kidney | A | 100200300
-----------------------------------------------------
2 | 400 | Heart | B | 400500600
短id的Map表:
表1的map1:
---------------------
Map_from | Map_to |
---------------------
Kidney | 200 |
Heart | 500 |
---------------------
表1的map2:
-----------------------------
Map_cat_from | Map_cat_to |
-----------------------------
A | 300 |
B | 600 |
-----------------------------
长id表:(这里显示的只是2个时间点的示例,而不是12个时间点)
---------------------------------------------------
Subject_ID | Short_ID | Long_ID Timepoint |
---------------------------------------------------
100 | 100200300 | 1002003000001 |
---------------------------------------------------
100 | 100200300 | 1002003000002 |
---------------------------------------------------
400 | 400500600 | 4005006000001 |
---------------------------------------------------
400 | 400500600 | 4005006000002
长id表的时间点Map:
------------------------------
Timepoint | Value_to_append |
------------------------------
1 | 0001 |
------------------------------
2 | 0002 |
当表单中给出输入时,我需要直接从Map表生成这些短id和长id(类别、器官类型、受试者id)
太长,读不下去了
从Map表和表单值生成id(id创建)
在末尾添加四个数字,并基于Map表(在末尾添加12个四位数)创建一组12个id(长id创建)
1条答案
按热度按时间2lpgd9681#
首先,创建一个查询qshortid:
输出:
接下来,创建一个查询,它将返回12行:
最后,创建一个笛卡尔(乘法)查询qlongid:
输出:
编辑:
要使用时间点Map,请使用:
输出: