Преглед на документи във формуляра на Microsoft Access
Обхват на проекта
Наскоро добавихме център за документи към проект, който позволява на потребителите да прикачват документи като pdf, word, txt и изображения към проект. Освен това те ще имат автоматичен процес, настроен за четене на входящи имейли и запазване на прикачените имейли на мрежово устройство. Целта е да се позволи на потребителя да види нови документи, които са получени, и да ги запази на правилното място. Разбира се, ние ще управляваме процеса за извличане на информация като тема и от кого идва документът, за да позволим на потребителя да разбере общата информация на документа и това ще бъде запазено в таблица. Освен това потребителят трябва да може да види документа, за да прочете съдържанието му.
Решение
Разбира се, можем да стартираме други приложения от достъп, за да преглеждаме word документи в Word и pdf в Adobe Acrobat и т.н. Въпреки това, когато потребителят има само един екран, за да работи с него, това означава превключване от едно приложение към друго и ако има няколко типа документи, тогава разбира се, това означава отваряне на множество приложения. Затова предоставихме просто решение, което ще стартира документа в нова форма за достъп с оформление на раздели, което позволява на потребителя лесно да управлява системата. В примера по-долу използвам код, който ще прочете файла от даден път, до който потребителят ще има нужда от достъп на своя компютър. Като алтернатива, ако документът е записан в SQL таблица, можем да променим кода, за да запишем временно документа на локално устройство и да стартираме файла от временното местоположение. Ако използвате този метод, бихте искали да включите допълнителен код за изтриване на временния файл след преглед/затваряне на формуляра.
Примерен формуляр
Предоставеният примерен формуляр трябва да се стартира, като се премине пътя на документа в OpenArgs
DoCmd.OpenForm "frmDocumentReview", OpenArgs:= Me.DocumentPath
Кодът при зареждане потвърждава, че пътят е предаден, както и дали файлът съществува. Ако всичко е наред, процесът продължава.
Private Sub Form_Load() If IsNull(Me.OpenArgs) Then MsgBox "No document to show", , "Path not specified" Exit Sub Else If Not FSO.FileExists(Me.OpenArgs) Then MsgBox "Your computer does not have access to the named file. You need to download the file to view it." Exit Sub Else Showdocument OpenArgs End If End If End Sub
Накрая кодът зарежда документа. Подложката Showdocument се грижи за различните типове документи. Повечето типове документи използват случая else. Самият формуляр има скрито текстово поле, наречено txtPath който съхранява стойността на OpenArgs (име и път на файла), това може да бъде или картографирано устройство, или UNC. Обектът на уеб браузъра съхранява =[txtPath] като източник на контрол. Въпреки това документите на Word не работят по същия начин и първо трябва да запишете документа като html. Използвах метод, първоначално написан от Crystal Long и направих някои малки промени.
Private Sub Showdocument(strPath As String) Dim strExt As String Dim sPathFileHTML As String Dim oWordApp As Object Dim oDoc As Object strExt = GetFileExt(strPath) Select Case strExt Case "docx" 'save word doc as HTML sPathFileHTML = CurrentProject.Path & "\temp.html" Set oWordApp = CreateObject("Word.Application") Set oDoc = oWordApp.Documents.Open(strPath) oDoc.SaveAs2 FileName:=sPathFileHTML, FileFormat:=8 'wdFormatHTML oDoc.Close False oWordApp.Quit Set oDoc = Nothing Set oWordApp = Nothing Case Else sPathFileHTML = strPath End Select 'open in browser control Me.txtPath.Value = sPathFileHTML End Sub