Avatar billede kkc Nybegynder
09. december 2005 - 19:37 Der er 9 kommentarer og
2 løsninger

Styr på word dokumenter igennem en Access database

Hej eksperter,

Hyperlink som datatype kan naturligvis bruges til at lænke forskellige dokumenter i en Access database. Men hvordan sikrer man et databasesystem der tager højde for at filerne omdøbes, flyttes o.s.v. - jeg tænker her på hvordan et journaliseringssystem egentlig er strikket sammen - og om noget lignende kan laves i Access ?

Eksempler/inspiration modtages gerne
Avatar billede hnteknik Novice
09. december 2005 - 19:40 #1
Med på en lytter
Avatar billede htx98i17 Professor
09. december 2005 - 19:47 #2
Man behøves ikke skrive noget for at være med på en lytter. Post blot en tom kommentar :-)
Avatar billede -anders- Juniormester
09. december 2005 - 20:52 #3
Hej
Det er en svær nød at knække den med dynamisk styring af filnavne og mapper, flytning af filer og mapper e.t.c. jeg er ikke sikker på at Access er det helt rigtige værktøj, men et stykke af vejen måske.

www.makeiteasy.dk ligger der et Access eks. til download, eks. hedder Indlæs filnavne i tabel. Dette eks. kunne bruges som inspiration et stykke af vejen, prøv evt. at tage et kik på det
Avatar billede -anders- Juniormester
09. december 2005 - 20:55 #4
Har lige tjekket ovenstående link, websitet har pt. tekniske problemer, men jeg tror at det omtalte eks. er en god start
Avatar billede kkc Nybegynder
10. december 2005 - 01:23 #5
OK - tjekker lige sitet når det er oppe at køre igen. Tror nok jeg har set Thomas's eksempler før.
Så vidt min logik den rækker skal Access være det 'styrende' værktøj - d.v.s. kunne åbne Word, Excel e.t.c. op hvor filerne bliver gemt af 'journaliseringssystemet' og naturligvis styret herfra vedr. omdøbning og omplacering. Er det ikke i grunden hvad et 'rigtigt' journaliseringssystem gør ?
Avatar billede jesperfjoelner Nybegynder
10. december 2005 - 02:00 #6
Der vil være omfattende at lave noget rigtig velfungerende, men der findes vel en række værktøjer som kan/skal bruges til et integreret system.
--------------------------------------------

Funktion til at gennemse mappe og indlæse filerne i tabel/listbox/array.
(Denne kræver reference til FileSystemObject)
Sub Importer(sMappe As String)
Dim fldr, fls, fl
Dim db As DAO.Database
Dim rst As DAO.Recordset

Set fs = CreateObject("Scripting.FileSystemObject")
Set fldr = fs.GetFolder(sMappe)
Set fls = fldr.Files
Set db = CurrentDb()
Set rst = db.OpenRecordset("tabelnavn")
On Error Resume Next
For Each fl In fls
    'If Right(fl.Name, 4) = ".doc" Then  'hvis der skal filtreres på endelse
        rst.AddNew
        rst.Fields(0) = fl.Name
        rst.Update
    'End If
Next fl
On Error GoTo 0
rst.Close
Set rst = Nothing
Set db = Nothing
End Sub

--------------------------------------------

Funktion til at søge efter fil på harddisken (hvis f.eks. den er væk).
http://www.mvps.org/access/api/api0006.htm

--------------------------------------------

Function til at tjekke om fil eksisterer.
IF len(dir(FuldStiTilFil))>0 Then
  msgbox "Den er der!"
End if

--------------------------------------------

Åbning af word/excel-filer fra Access.
Excel eksempel:
Dim objExcelApp As Object              'late binding
Dim objExcelDoc As Object              'late binding
'Dim objExcelApp As Excel.Application  'early binding
'Dim objExcelDoc As Excel.Workbook      'early binding
Set objExcelApp = CreateObject("excel.application") 'late binding
'Set objExcelApp = New Excel.Application 'early binding
'Set objExcelDoc = objExcelApp.Workbooks.Add(Application.CurrentProject.Path & "\" & me!feltmedfilnavn & "") 'late binding
objExcelApp.Visible = True
...
din kode der manipulerer det åbne excel/word f.eks. udskriver eller kalder "gem som"-boks m.m.
...
set ObjExcelDoc=Nothing
Set ObjExcelApp=Nothing

--------------------------------------------


Det var en spæd start :-)
Avatar billede jesperfjoelner Nybegynder
10. december 2005 - 02:06 #7
Endnu et søgeeksempel fra hjæpefilen:
Set fs = Application.FileSearch
With fs
    .LookIn = "C:\My Documents"
    .FileName = "cmd*"
    If .Execute(SortBy:=msoSortbyFileName, _
    SortOrder:=msoSortOrderAscending) > 0 Then
        MsgBox "There were " & .FoundFiles.Count & _
            " file(s) found."
        For i = 1 To .FoundFiles.Count
            MsgBox .FoundFiles(i)
        Next i
    Else
        MsgBox "There were no files found."
    End If
End With

--------------------------------------------

Og så selvfølgelig:

Sletning af fil direkte:
Kill "stiTilFil"

Eller til Papirkurven:

Private Declare Function apiSHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" _
    (lpFileOp As SHFILEOPSTRUCT) As Long

Private Type SHFILEOPSTRUCT
    hwnd As Long
    wFunc As Long
    pFrom As String
    pTo As String
    fFlags As Integer
    fAnyOperationsAborted As Long
    hNameMappings As Long
    lpszProgressTitle As String
End Type

Private Const FOF_ALLOWUNDO = &H40
Private Const FO_DELETE = &H3
Private Const FOF_NOCONFIRMATION = &H10

Sub sDelete(strFile As String)
'  Procedure to delete a file to the Recycle Bin instead of deleting it outright
'  Accepts:
'      strFile - a full path/file name to a file that is to be deleted.
    Dim typSHFile As SHFILEOPSTRUCT
    Dim lngReturn As Long
    If Len(Dir(strFile)) = 0 Then
        MsgBox "File does not exist.", vbOKOnly, " "
    Else
        With typSHFile
            .pFrom = strFile & vbNullChar & vbNullChar
            .wFunc = FO_DELETE
            .fFlags = FOF_ALLOWUNDO Or FOF_NOCONFIRMATION
        End With
        lngReturn = apiSHFileOperation(typSHFile)
    End If
End Sub
--------------------------------------------
Avatar billede hnteknik Novice
10. december 2005 - 11:39 #8
Jeg havde engang i version 2 udgaven en simpel version kørende, hvor jeg via ole container kunne previewe indholdet af documents. Man kan også hente hente de key words, der ligger i f.eks. doc ( hvem har forfattet, sidst rettet osv.) kan finde de ting frem, hvis relevant.
Avatar billede supertekst Ekspert
10. december 2005 - 16:29 #9
Endnu et forslag - det kan også gøres på andre måder:
Nedenstående kode er indlagt i Normal.dot:

Public db, tabel, xsti
Sub FilerGem()
    ActiveDocument.Save
    visDokumentInfo
    gemmes
End Sub
Sub filerGemSom()
    Dialogs(wdDialogFileSaveAs).Show
    visDokumentInfo
    gemmes
End Sub
Private Sub visDokumentInfo()
Rem egenskabs-dialogboks
    With Dialogs(wdDialogFileSummaryInfo)
        .Show
        .Execute
    End With
End Sub
Private Sub gemmes()
    checkDB ActiveDocument
    ActiveDocument.Close savechanges:=wddosavechanges
   
    tabel.Close
    db.Close
   
    Application.Quit
End Sub
Sub checkDB(dok As Document)
    xsti = "d:\eksperten\journalisering\"
    openJournal
    If dok.BuiltInDocumentProperties("Title") <> "" Then
        If findesJournal(dok.BuiltInDocumentProperties("Title")) = True Then
            With tabel
                .Edit
                .Fields(2) = dok.FullName
                .Update
            End With
        Else
            opretJournal dok
        End If
    End If
End Sub
Private Sub openJournal()
    Set db = opendatabase(xsti + "journalisering.mdb")
    Set tabel = db.openrecordset("journal")
End Sub
Private Sub opretJournal(dok As Document)
    With tabel
        .AddNew
            .Fields(1) = dok.BuiltInDocumentProperties("Title")
            .Fields(2) = dok.FullName
        .Update
    End With
End Sub
Private Function findesJournal(titel)
    openJournal
    tabel.Index = "titel"
    tabel.Seek "=", titel
   
    If Not tabel.NoMatch Then
        findesJournal = True
    Else
        findesJournal = False
    End If
End Function

I databasen-tabellen er der p.t. kun 3 felter ID=autonummering, Titel=Tekst (dokumenttitlen) samt et hyperlink til dokumentet.Disse data ajourføres fra koden i Normal.dot. Derudover en formular, der er baseret på tabellen samt forsynet med en knap - til: Følg hyperLinket.
Avatar billede kkc Nybegynder
10. december 2005 - 21:12 #10
supertekst læg lige et svar - så deler du og jesperfjoelner point. I har givet mig meget inspiration at arbejde med - takker.
Avatar billede supertekst Ekspert
11. december 2005 - 11:16 #11
Selv tak - her er så et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester