2016-06-30 5 views
0

Я просматриваю старую почту, в которой было мое решение - «Создание базы данных документов с использованием Microsoft Access» с ответом, предоставленным Renaud BomPuis, в форме примерной базы данных (https://dl.dropboxusercontent.com/u/52900980/StackOverflow/SO25044339.accdb).создание базы данных документа

Я смог обработать исходный код для этого в соответствии с моими потребностями и успешно вставить его в свою основную базу данных. Единственная проблема, с которой я сталкиваюсь, заключается в том, что она создает новую запись в неправильном для меня месте. Когда пользователь нажимает «Загрузить файл», создается новая запись и открывается форма, позволяющая выбрать файл с помощью диалогового окна файла. Но если пользователь меняет свое мнение и клики отменяют, запись уже создана, но пустой путь к файлу.

Хотелось бы создать только новую запись, если пользователь ее подтвердит, но я не могу манипулировать кодом в правильном порядке, чтобы он работал.

Помогите пожалуйста? Большое спасибо.

EDIT: Код с комментариями

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

Private Sub btnUploadDoc_Click() 'Создать новую запись в таблице Документы для выбранного Работы Нет Dim DocId As Variant Dim дб Как dao.Database Dim RS Как dao.Recordset Набор дб = CurrentDb() Set Rs = db.OpenRecordset ("tblDocuments", dbOpenDynaset, dbFailOnError) с интерфейсом RS .AddNew ! WorksNo = cboWorksNo .update .Привести 0, .LastModified DocId =! DocID . Закрыть Завершить Установить rs = Nothing Установить db = Nothing DoCmd.OpenForm "frmDocSelect", WhereCondition: = "DocID =" & DocID End Sub – Chris

+0

Я предполагаю, что ваш код выбора кода находится в форме 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

Смежные вопросы