在一个表中查找信息以填充绑定到另一个表的表单中的值

时间:2013-06-26 23:21:08

标签: database excel ms-access

我有一份excel表,其中包含有关每位员工的信息。我每个月都会不断收到新的电子表格。我必须创建一个管理与员工相关的案例的数据库。我有一个数据库和已经为包含emp信息字段的案例创建的有界形式。我想要做的是只在表单中键入emp id并希望表单在电子表格中查找(可以是案例数据库中的表)并填充表单中的其他字段并且信息可以去进入案例db。可以这样做吗?

1 个答案:

答案 0 :(得分:0)

假设Employee信息在当前数据库中可用,可能在链接(Excel)表中有许多方法可以解决这个问题,其中一种方法是:

  • 根据Employees表创建表单,显示您对自动填充感兴趣的字段
  • 删除表单的RecordSource
  • 删除表单上每个控件的ControlSource。你需要这样做,否则他们最初都会显示错误#Name?
  • 将这些控件的LockedEnabled属性分别设置为是或否,这样他们将显示的信息将无法编辑
  • 例如,在表单中添加Combo Box;您可以接受控件向导中的第三个选项来帮助您填充此选项。您需要EmployeedID作为第一列,但可以添加其他列
  • 删除Access为Embedded Macro事件创建的AfterUpdate(或Access 2003或更早版本的宏)
  • 单击此事件的构建按钮(...)并创建一些代码。

以下是我在示例员工数据库中使用的一些代码:

Private Sub cboStaff_AfterUpdate()
    Me.RecordSource = "SELECT StaffID, Title, FirstName, Surname FROM " _
        & "tblStaff WHERE StaffID = " & Me.cboStaff
    With Me
        .txtStaffID.ControlSource = "StaffID"
        .txtTitle.ControlSource = "Title"
        .txtFirstName.ControlSource = "FirstName"
        .txtSurname.ControlSource = "Surname"
    End With
End Sub

每当用户从组合框中选择一个员工(或员工)成员时,这将从表中检索数据并填充表单上的各种控件。这些控件将无法编辑,因为它们将被锁定或未启用。 (您还可以将表单的“允许添加”和“允许删除”属性设置为“否”,但“允许编辑”需要保留为“是”,否则组合框将无效。)

此代码可以改进。特别是,只需设置RecordSourceControlSource一次。

显然,我不了解您的数据库的具体情况,还有其他方法可以解决这个问题。

已添加但是,如果表单的RecordSource是您希望使用Employees表中的某些详细信息填充的其他表,则代替更改RecordSource和ControlSource如图所示,您可以使用ADO(在组合框的AfterUpdate事件中)创建包含单行的RecordSet(所选员工的详细信息)并设置控件的值(Text)从此记录集形成值。正如我所说,有很多方法可以解决这个问题。

已添加以回复:

  

“您向表格请求的更改未成功,因为   他们会在索引,主键或中创建重复值   关系....“

我不知道你的确切设置,但我可以告诉你为什么会这样。 Access中的默认行为是,对于绑定表单,如果对任何一个绑定字段进行了更改,则尝试离开该记录将导致Access保存记录。

表单是否在不需要时绑定?或者您是否将控件的ControlSource设置为不需要的字段?如果情况并非如此,那么:

在表单的BeforeUpdate事件中,您可以将Cancel参数设置为True以防止更新(或插入)。但是,这将阻止插入任何新记录。您可以拥有用户需要单击以显式保存记录的Button,或者在BeforeUpdate事件中使用If测试某些条件以决定是否允许插入(或更新)或者停止保存记录(通过设置Cancel = True)。