首先,请耐心等待我没有数据库经验,并且在访问过程中承担了一些数据输入的任务,这非常繁琐,因此我开始编写按钮以使我的生活更轻松。
我想在FINLDATA MODELS中使用FINLDATA_ID和MODEL从表格(F_EDIT_ENTRIES_MODEL_SUB)中插入一行,其中MODEL不存在。
FINLDATA - what populates top part of form
FINLDATA MODELS - populates sub form (where times are assigned)
对于每个OPTION,我们为当前MODELS分配BASE TIMES。传统上,我面前的人在表格中复制和粘贴时间(荒谬)。我编写了一个按钮来更新所有模型的时间,但是如果模型没有该ID的先前条目,则这不起作用。该表单包含当前在T_MODEL_LIST中找到的所有模型的列表。由于FINLDATA模型中没有记录,有许多模型没有时间附加的模型实例
给定选项的每个进程都有唯一的FINLDATA_ID,所有模型的FINLDATA_ID都相同。 FINLDATA MODELS是我们更新时间的地方。每个记录对每个模型都有自己唯一的FINLDATA_MODEL_ID(参见T_MODEL_LIST)。 FINLDATA_MODEL_ID只是一个数字,例如,如果我要在表单上添加一个以前没有时间进行该过程的模型,那么它将是FINLDATA MODELS +1中的记录总数。
我想编写另一个按钮,为每个模型添加一条记录到FINLDATA MODELS,没有时间。
逻辑如下:
插入FINLDATA模型 FORM的FINLDATA ID(Me.FINLDATA_ID.Value)&来自T_MODEL_LIST的模型,它在FINLDATA模型中尚未出现
E.g。对于特定的FINLDATA_ID,如果FINLDATA MODELS中不存在来自T_MODEL_LIST的MODEL。插入FINLDATA模型(FINLDATA_ID,没有记录的模型)
希望这可以解决问题。子表单列出左侧的所有模型,如果有帮助,则由T_MODEL_LIST填充。
用于以子表单填充模型列表的查询的SQL
SELECT T_MODELS_LIST.MODEL AS MASTER_MODEL,T_MODELS_LIST.MODEL_NAME,models.FINLDATA_MODEL_ID,models.FINLDATA_ID,models.MODEL,models。[BASE TIME],models.VERIFICATION,models.COMMENTS,models。[ESTABLISHMENT TIME],models。 STATION
FROM T_MODELS_LIST LEFT JOIN(SELECT * FROM [FINLDATA MODELS] WHERE FINLDATA_ID = Forms![F_EDIT_ENTRIES]![FINLDATA_ID])AS模型ON T_MODELS_LIST.MODEL = models.MODEL
WHERE(((T_MODELS_LIST.REMOVED)=否)) 订单T_MODELS_LIST.MODEL;
谢谢大家。
答案 0 :(得分:0)
考虑使用域聚合DCount来计算 models 表中的记录,并决定根据计数结果运行追加或更新查询。另外,请考虑使用QueryDefs的参数化查询,事先保存已准备好的查询,尤其是在您收到用户输入后。
SQL (以下保存为存储的查询)
更新
CartItem
APPEND
PARAMETERS [BaseTimeParam] Long, [IDParam] Long;
UPDATE [FINLDATA MODELS]
SET [BASE TIME] = [BaseTimeParam] _
WHERE [FINLDATA MODELS].FINLDATA_ID = [IDParam]
<强> VBA 强>
PARAMETERS [IDParam] Long, [ModelParam] Long, [BaseTimeParam] Long;
INSERT INTO [FINLDATA MODELS] (FINLDATA_ID, MODEL, [BASE TIME])
VALUES ([IDParam], [ModelParam], [BaseTimeParam]);
答案 1 :(得分:0)
' Define variables
Dim IDToUpdate As String
Dim m_strSQL As String
' Grab ID
IDToUpdate = Me.FINLDATA_ID.Value
' INSERT ID and missing model model numbers - WORKS, doesn't skip 'Removed' models
m_strSQL = "INSERT INTO [FINLDATA MODELS] (FINLDATA_ID, MODEL)" & _
"SELECT '" & IDToUpdate & "', T_MODELS_LIST.MODEL FROM T_MODELS_LIST WHERE NOT EXISTS(SELECT MODEL FROM [FINLDATA MODELS] WHERE [FINLDATA MODELS].MODEL = T_MODELS_LIST.MODEL)"
RunSQL m_strSQL
' Refresh the form display
Me.F_EDIT_ENTRIES_MODEL_SUB.Form.Requery
这就是我最终让它工作的原因,谢谢大家!