从MS Access

时间:2016-08-23 08:39:00

标签: database ms-access

实际上,让我用一些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

2 个答案:

答案 0 :(得分:0)

我不知道这是否正是您所需要的,但您只需使用SQL语句INSERT + SELECT:

INSERT INTO yourTableToPopulate(field1,...,fieldN)
SELECT field1,...,fieldN FROM yourInitialTable

答案 1 :(得分:0)

建议#1:

使用绑定表单进行数据输入/修改。这将为您节省代码和错误搜索的批次

  • 根据emp_department
  • 切换表单RecordSource
  • 隐藏属于其他部门的所有控件(无论如何都需要此部分)。最好通过为控件分配标记来完成。

建议#2(独立于#1):

合并"员工"表格与他们共同的列。

仅为额外列添加其他表,采用1:1关系。使用查询而不是表来显示一个部门的所有员工,以及表单的记录源。

#2a:(到目前为止最简单)

使用包含所有列的单个表。只填写与部门相关的字段,其他字段为空。