2009-12-02 50 views
0

所以我有一个表单,我希望用户用来更新多个表格。我不希望表格绑定到表格上,因为我宁愿用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 

所以这就是我如何设置表格。所有这些文本/ cmb框都存在于一张桌子上,我希望能够通过点击按钮将这些数据从这种形式保存到所有相关表格中。

因此,谁能帮助我的以下内容:

如果我有一个新建按钮点击后,此绑定表单填写,怎能我告诉隐藏的文本框(即最好是包含““的ID号),为每个表填充新的ID号(自动编号),以便我可以将更新SQL语句分配给SAVE按钮单击,在VB中保存数据?

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

我要对这个错误的方式

编辑:

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

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

当你运行一个INSERT时,ID号码是否需要出现在STATEMENT中,还是只能在你执行时为你分配下一个相关的ID号码?

如果不是 考虑上面的方法,我如何确定这个数字(ID我需要使用)我自己,与代码?

另一个问题?如何通过绑定表单上的记录函数来打败鼠标滚轮滚动?

+1

为什么你不希望使用绑定形式?你可能会在1/10的时间内建立这些表单,这将需要你编写所有的代码。 – 2009-12-03 01:38:42

+0

我不认为这是一个很好的问题。所要求的与Access的一切是对立的。如果这些表具有几乎相同的结构(在这一点上,您可能会考虑是否存在模式设计错误,并且来自这些近似​​表的数据应该全部位于同一个表中)。你所描述的看起来像你应该使用绑定父窗体与一些组合框和子窗体。但是,你没有给出足够的解释,说明你想要做出正确的答案。 – 2009-12-03 05:07:31

+0

在Access中,绑定的EDITING表单从未如此简单,除非您要求对保存的过度控制。我使用大量未绑定的表单来开始一个新记录,仅收集必填字段,插入残余记录,然后在绑定的完整数据编辑表单中为用户打开它。也许这种方法会有所帮助。但是你不解释数据表之间的关系(这不是自明性的),所以很难说如何去做。但是如果你打算使用Access,你确​​实需要学习使用绑定表单。 – 2009-12-04 04:41:33

回答

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年来我还没有完成访问,但我记得做了这样的事情。一旦你有了这个身份,你就把它放在隐藏的文本框中。这将帮助您执行使用此标识的UPDATES。

这是一个良好的开端:http://support.microsoft.com/kb/815629 这里是另一个伟大的文章,可以帮助你:http://support.microsoft.com/kb/815629

相关问题