0

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

4

1 回答 1

0

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

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

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

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

每当用户从组合框中选择员工(或雇员)成员时,这将从表中检索数据并填充表单上的各种控件。这些控件将无法编辑,因为它们将被锁定或未启用。(您也可以将表单的 Allow Additions 和 Allow Deletions 属性设置为 No,但 Allow Edits 需要保持为 Yes,否则组合框将不起作用。)

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

显然我不知道你的数据库的细节,还有其他方法可以解决这个问题。

添加了但是,如果RecordSource表单是您希望使用员工表中的一些详细信息填充的其他表,那么您可以使用 ADO(在组合框的 AfterUpdate 事件中,而不是按照指示更改 RecordSource 和 ControlSource ) 创建一个RecordSet包含单行的行(所选员工的详细信息),并将Text表单上控件的值 (the ) 设置为此记录集中的值。正如我所说,有很多方法可以解决这个问题。

添加响应:

“您请求对表的更改不成功,因为它们会在索引、主键或关系中创建重复值......”

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

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

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

于 2013-06-28T17:47:35.600 回答