我创建2个表(资产和AssetMovements)和一种形式(资产)的资产管理数据库。 我需要保持每一项资产运动的记录,所以每一个新的资产加入到资产表或现有资产记录的“位置”值时间被修改,记录应保存至AssetMovements表。 该AssetMovements表仅仅是有记录的交易。
我怎样才能做到这一点? 我将不胜感激任何指针,我可以得到,或者,如果任何人都可以建议保持运动记录的更好方法。 谢谢。
我创建2个表(资产和AssetMovements)和一种形式(资产)的资产管理数据库。 我需要保持每一项资产运动的记录,所以每一个新的资产加入到资产表或现有资产记录的“位置”值时间被修改,记录应保存至AssetMovements表。 该AssetMovements表仅仅是有记录的交易。
我怎样才能做到这一点? 我将不胜感激任何指针,我可以得到,或者,如果任何人都可以建议保持运动记录的更好方法。 谢谢。
看到你正在使用Access 2010中,这看起来像一个很好的借口的数据宏当数据从MS Access之外的更新数据宏仍会继续运行。
我创建了一个资产表和AssetMovements表,该表AssetMovements有一个默认值的字段ActionDate NOW(),其中规定动作发生的日期。
您需要在资产表中的两个宏:
这是所有你需要做的,如下面所示。
添加或更改记录之后,数据被自动记录在AssetMovements表:
您可以将运行一个小示例VBScript ...
strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=z:\docs\demo.accdb"
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Open strCon
sSQL="INSERT INTO Assets (Asset,Location) Values ('Printer',7)"
cn.Execute sSQL
sSQL="Update Assets Set Location=5 Where Asset='Printer'"
cn.Execute sSQL
要看到,这也会更新AssetMovements表。
也有更改的更完整的记录中的LogEvent数据宏。
该按钮有当你点击它被发射的单击事件。 使用VBA编写点击按钮时执行一些代码。
当您单击按钮,你会再保存记录的资产。 然后就是记录复制到使用查询AssetMovements表。 因此,该代码会是这个样子:
Dim OldLocation As String
Private Sub CmdSave_Click()
DoCmd.RunCommand acCmdSaveRecord
End Sub
Private Sub Form_AfterUpdate()
Dim strSQL
If OldLocation <> Location.Value Then
strSQL = "INSERT INTO AssetMovements SELECT T1.* FROM Assets WHERE Assets.ID = "
strSQL = strSQL & Me.ID
CurrentDb.Execute strSQL
End If
End Sub
Private Sub Form_BeforeUpdate(Cancel As Integer)
OldLocation = Me.Location.OldValue
End Sub
Private Sub Form_Current()
OldLocation = Me.Location.Value
End Sub
那么这将复制形式的当前记录,使用一个唯一的ID(我猜在由assetid),到AssetMovement表。