2016-06-30 19 views
0

Ich kam über einen alten Beitrag, der die perfekte Lösung für meine Anforderung hatte - "Erstellen einer Dokumentdatenbank mit Microsoft Access" mit der Antwort von Renaud BomPuis in Form einer Beispieldatenbank (https://dl.dropboxusercontent.com/u/52900980/StackOverflow/SO25044339.accdb).Erstellen einer Dokumentendatenbank

Ich war in der Lage, den Quellcode für meine Bedürfnisse zu manipulieren und erfolgreich in meine Hauptdatenbank einzufügen. Das einzige Problem, das ich habe, ist, dass es für mich einen neuen Rekord an der falschen Stelle schafft. Wenn der Benutzer auf "Datei hochladen" klickt, wird ein neuer Datensatz erstellt und ein Formular geöffnet, um die Datei mithilfe des Dateidialogs auswählen zu können. Wenn der Benutzer jedoch seine Meinung ändert und auf "Abbrechen" klickt, wird der Datensatz bereits erstellt, enthält jedoch keinen Dateipfad.

Ich möchte nur in der Lage sein, einen neuen Datensatz zu erstellen, wenn der Benutzer es bestätigt, aber ich kann nicht scheinen, den Code in der richtigen Reihenfolge zu bearbeiten, damit es funktioniert.

Kann jemand bitte helfen? Danke vielmals.

EDIT: Code aus Kommentar

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

Können zeigen Sie den Code auf Klick Schaltfläche Datei hochladen bitte? In unserem Firmennetz kann ich die db –

+0

Private Sub downloaden btnUploadDoc_Click() "Erstellen Sie einen neuen Datensatz in der Tabelle Dokumente für den ausgewählten Arbeiten No Dim DocID As Variant Dim db Wie DAO.Database Dim rs Als dao.Recordset Set db = CurrentDb() Set rs = db.OpenRecordset ("tblDocuments", dbOpenDynaset, DbFailOnError) Mit rs .AddNew ! WorksNo = cboWorksNo .Update .Move 0, .LastModified DocID =! DocID . Schließen Ende mit Set rs = nichts Set db = Nothing DoCmd.OpenForm "frmDocSelect", WhereCondition: = "DocID =" & DocID End Sub – Chris

+0

Ich gehe davon aus, dass Ihr Dokumentauswahlcode im Formular frmDocSelect ist. Sie sollten das auch posten (aber bearbeiten Sie Ihren ursprünglichen Beitrag und wickeln Sie den Code in Code-Tags ein - wie @Andre das letzte Mal für Sie getan hat). Ich denke, es ist wahrscheinlich einfacher, wenn Sie die Upload-Datei überprüfen, bevor Sie einen neuen Datensatz erstellen - und tun Sie dies einfach auf Ihrem aktuellen Formular - bevor Sie den neuen Datensatz öffnen – dbmitch

Antwort

0

Dies wird keine triviale Änderung sein, da (ich nehme an) frmDocSelect in tblDocuments auf einem vorhandenen Datensatz abhängt.

Der beste Weg zum Fortfahren ist wahrscheinlich, einfach den neuen Datensatz zu löschen, wenn der Benutzer auf Abbrechen klickt.

So etwas wie

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

Hallo und vielen Dank für die Antworten. Ich werde Andre's Löschlösung versuchen und ich werde Sie wissen lassen, wie es mir geht. – Chris