将一个表单链接到多个表,并在单击时保存数据

时间:2009-12-02 16:58:31

标签: forms ms-access access-vba ms-access-2003

所以我有一个表单,我希望用户用它来更新多个表。我不希望表单绑定到表格,因为我宁愿用VBA(我想,我不知道)这样做。

所以这是一个小桌子示例

用户表

UserID
First
Middle
Last
Division
Title

EquipTable

EquipID
AssignedLaptop
Model
Barcode

SoftTable

SoftID
SoftwareName
License#
Custom (running sum to calculate how many licenses are left....another question)

ExchangeTable

UserID
SoftID
EquipID

这就是我如何设置表格。所有这些text / cmb框都存在于一个表中,我希望能够通过单击按钮将这个数据从这一个表单保存到所有相关表。

所以任何人都可以帮助我:

如果我在单击“创建新”按钮后填充此未绑定表单,那么我如何告知隐藏文本框(理想情况下包含“”ID号码),以填充新的ID号(自动编号),每个表,在其中,以便我可以在VB中分配一个UPDATE SQL语句点击,在VB中保存数据?

我可以设置它,以便我只是“交换表”(不知道为什么我这样命名)填充其他表的ID号,而不是反之亦然?

我是否采取了错误的方式

编辑:

我只是试图给你一个例子,看看我在一个表单上是否可以使用多个表(最终是多个键),以及如果是这样,它与使用一个表单/表执行它有什么不同? :我使用非绑定方法很多,因为我必须构建表单,并且需要在VBA中不断地将参数从一个表单传递到下一个表单。我认为自己编写代码更快?所以对于这个概念,我总是在表单上有一个隐藏的文本框,通常具有相对表的IDnumber。所以点击保存只需要一个简单的SQL = * WHERE Tbl_ID = frmID想法。

我只是想知道这些问题吗?

当您运行INSERT时,身份证号码是否需要出现在STATEMENT中,或者只是在您执行时为您分配下一个相对的身份号码?

如果没有 考虑到上面的方法,我如何使用代码确定这个号码(我需要使用的ID)?

另一个问题?如何在绑定的表单上击败鼠标滚轮滚动记录功能?

1 个答案:

答案 0 :(得分:2)

我明白你在说什么,措辞很奇怪,但我确实知道你在哪里这么做。

这就是你所拥有的:

  • 您的未绑定表单未链接到任何表格
  • 这个未绑定到任何表的未绑定表单将由您设计,添加一些文本框以及组合框和按钮
  • 在这些文本框中,您有一些文本框将存储该行的ID(键值)。因此,当您进行保存时,ID号将被设置回文本框
  • 一旦将ID号设置为此隐藏字段,您就可以对需要此ID号的所有表发布更新

这听起来不错吗?如果是这样,那很简单。所有你需要做的就是一旦你点击“创建按钮”执行插入,就会产生这样的效果:

 ' Command to Insert Records.
      Dim cmdInsert As New OleDbCommand()
      cmdInsert.CommandText = "INSERT INTO AutoIncrementTest (Description) VALUES (?)"
      cmdInsert.Connection = cnJetDB
      cmdInsert.Parameters.Add(New OleDbParameter("Description", OleDbType.VarChar, 40, "Description"))
      oleDa.InsertCommand = cmdInsert

然后你发出另一个命令来获取IDENTITY,即你的ID:

  ' Create another command to get IDENTITY value.
  cmdGetIdentity = New OleDbCommand()
  cmdGetIdentity.CommandText = "SELECT @@IDENTITY"
  cmdGetIdentity.Connection = cnJetDB

您始终可以使用SELECT @@ IDENTITY

获得身份

因此,在您的代码中,您将文本框设置为SELECT @@ IDENTITY的值。 我在5年多的时间里没有访问过,但我记得做过这样的事情。获得此身份后,将其放入隐藏文本框中。这将帮助您执行使用此身份的更新。

这是一个很好的起点:http://support.microsoft.com/kb/815629 这是另一篇可能对您有所帮助的好文章:http://support.microsoft.com/kb/815629