实际上,让我用一些vba代码修改问题。基本上,我有三个表代表员工,信息系统,财务和运营部门。这三个表有一些共同的领域,而有些领域是独一无二的。我有一个下拉列表,其中包含以下值:IS,FN和OP代表emp_department。我想在保存按钮事件上写一个vba代码,它将检查所选的值是否为IS,记录应保存在信息系统表中,如果是FN,则值应保存在Finance Tabe中,如果是OP,则值应保存在操作表中。我写了下面的代码,但无法实现。如果这可行,真的很感激。
Option Compare Database
Function getPayload(formName As String, tableName As String) As String
Dim formFields As Variant
Dim fieldIndex As Integer
formFields = getTableFields(tableName)
Dim formDictionary As New Dictionary
For fieldIndex = 0 To UBound(formFields)
Set formDictionary(formFields(fieldIndex)) = _
Forms(formName).Controls(formFields(fieldIndex))
Next fieldIndex
End Function
Function populateInformationSustemsFields(formName As String, record As Dictionary)
Forms(formName).Controls("emp_depart").SetFocus
If record("emp_depart") = "IS" Then
Private Sub cmdAdd_Click()
CurrentDb.Execute "INSERT INTO InformationSustmes(formFields)"
End Sub
End If
End Function
答案 0 :(得分:0)
我不知道这是否正是您所需要的,但您只需使用SQL语句INSERT + SELECT:
INSERT INTO yourTableToPopulate(field1,...,fieldN)
SELECT field1,...,fieldN FROM yourInitialTable
答案 1 :(得分:0)
建议#1:
使用绑定表单进行数据输入/修改。这将为您节省代码和错误搜索的批次。
RecordSource
建议#2(独立于#1):
合并"员工"表格与他们共同的列。
仅为额外列添加其他表,采用1:1关系。使用查询而不是表来显示一个部门的所有员工,以及表单的记录源。
或#2a:(到目前为止最简单)
使用包含所有列的单个表。只填写与部门相关的字段,其他字段为空。