创建文档数据库

时间:2016-06-30 13:19:06

标签: access-vba ms-access-2016

我浏览了一个旧帖子,该帖子有我的要求的完美解决方案 - '使用Microsoft Access创建文档数据库'答案由Renaud BomPuis以样本数据库(https://dl.dropboxusercontent.com/u/52900980/StackOverflow/SO25044339.accdb)的形式提供。

我已经能够为此操作源代码以满足我的需要并成功将其插入到我的主数据库中。我唯一的问题是它为我创造了一个错误点的新记录。当用户点击“上传文件”时创建新记录并打开表单以使用文件对话框选择文件。但是,如果用户改变主意并单击取消,则记录已经创建但没有文件路径。

我希望能够只创建一条新记录,如果用户确认它,但我似乎无法将代码操作到正确的顺序以使其工作。

有人可以帮忙吗?非常感谢。

编辑:评论代码

Private Sub btnUploadDoc_Click() ' Create a new record in the Documents table for the selected Works No 
Dim DocID As Variant 
Dim db As dao.Database 
Dim rs As dao.Recordset 

Set db = CurrentDb() 
Set rs = db.OpenRecordset("tblDocuments", dbOpenDynaset, dbFailOnError) 
With rs 
    .AddNew !WorksNo = cboWorksNo 
    .Update 
    .Move 0, .LastModified 
    DocID = !DocID 
    .Close 
End With 
Set rs = Nothing 
Set db = Nothing 
DoCmd.OpenForm "frmDocSelect", WhereCondition:="DocID=" & DocID 
End Sub

1 个答案:

答案 0 :(得分:0)

这不会是一个微不足道的变化,因为(我假设)frmDocSelect取决于tblDocuments中的现有记录。

如果用户点击取消,最好的方法就是删除新记录。

这样的东西
Sub cmdCancel_Click()
    Dim DocID As Long
    DocID = Me.DocID
    ' Close form before deleting, to avoid a flicker of "#Deleted"
    DoCmd.Close acForm, Me.Name, acSaveNo
    CurrentDb.Execute "DELETE * FROM tblDocuments WHERE DocID=" & DocID
End Sub