2016-06-30 185 views
0

我在一箇舊的帖子中找到了一個完整的解決方案,它爲我的需求提供了一個完美的解決方案 - '使用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 
+2

您就可以在點擊按鈕上傳文件的代碼嗎?在我們的企業網絡我無法下載數據庫 –

+0

私人小組btnUploadDoc_Click() '創建的文件表中選擇的作品沒有 昏暗的DocID爲Variant 昏暗的分貝新紀錄DAO.DATABASE 昏暗RS作爲dao.Recordset 設置DB = CurrentDb() 集RS = db.OpenRecordset( 「tblDocuments」,dbOpenDynaset,dbFailOnError) 隨着RS .AddNew !WorksNo = cboWorksNo .Update .Move 0,.LastModified 的DocID =!的DocID 。關閉 End With Set rs = Nothing Set db = Nothing DoCmd.OpenForm「frmDocSelect」,WhereCondition:=「DocID =」&DocID End Sub – Chris

+0

我假設您的doc選擇代碼位於frmDocSelect窗體中。你也應該發佈它(但是編輯你的原始帖子並將代碼包裝在代碼標籤中 - 就像@Andre最後一次爲你做的那樣)。如果您在創建新記錄之前檢查上傳文件,並在當前表單上執行此操作,那麼在打開新記錄之前,我想這可能會更簡單 – dbmitch

回答

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 
+0

嗨,謝謝您的回覆。我要去嘗試安德烈的刪除解決方案,並讓我知道我如何繼續。 – Chris