webForumDet fria alternativet

länka in filer till ett formulär

Databaser & SQL

2 svar · 190 visningar · startad av afk

Medlem sedan mars 20042 inlägg
Frågan#1

Kan man göra detta i Access???
Jag vill kunna spara filnamn i en databas.
Filer som skall sparas i databasen ska gå att hitta genom att "bläddra" fram och välja i en fillista.

Filen (eller rättare sagt länken till filen) som är sparade i databasen skall gå att öppna innefrån Access.

Hjälp mottages varmt!

Medlem sedan dec. 20003 887 inlägg
#2

Att öppna en fil från Access med det associerade programmet kan göras med lite VBA.

[blue]'**************************
'***App Window Constants***
'**************************[/blue]
Public Const WIN_NORMAL = 1         'Open Normal
Public Const WIN_MAX = 3            'Open Maximized
Public Const WIN_MIN = 2            'Open Minimized

[blue]'**************************
'***FileOpen Error Codes***
'**************************[/blue]
Public Const ERROR_OUT_OF_MEM = 0&
Public Const ERROR_FILE_NOT_FOUND = 2&
Public Const ERROR_PATH_NOT_FOUND = 3&
Public Const ERROR_ACCESS_DENIED = 5&
Public Const ERROR_BAD_FORMAT = 11&
Public Const ERROR_SUCCESS = 32&
Public Const ERROR_NO_ASSOC = 31&

[blue]'*******************
'***Windows API's***
'*******************[/blue]
Private Declare Function apiShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, _
  ByVal lpOperation As String, _
  ByVal lpFile As String, _
  ByVal lpParameters As String, _
  ByVal lpDirectory As String, _
  ByVal nShowCmd As Long) As Long

Public Function OpenFileByType(strFileName As String, lngWindowMode As Long) As Long
    Dim lngRet As Long
    Dim varTaskID As Variant
    
    'Testa om filtypen har ett registrerat program
    lngRet = apiShellExecute(hWndAccessApp, vbNullString, strFileName, vbNullString, vbNullString, lngWindowMode)
            
    If lngRet > ERROR_SUCCESS Then
        lngRet = -1
    Else
        If lngRet = ERROR_NO_ASSOC Then
            'Inget program associerat med filtypen. Testa via Öppna med...
            varTaskID = Shell("rundll32.exe shell32.dll,OpenAs_RunDLL " & strFileName, WIN_NORMAL)
            lngRet = (varTaskID <> 0)
        End If
    End If
    
    OpenFileByType = lngRet
End Function

Lägg ovanstående i en modul och sedan när du vill öppna filen med hjälp av en sökväg kallar du bara på funktionen OpenFileByType

If OpenFileByType(strFileName, WIN_NORMAL) = ERROR_FILE_NOT_FOUND Then
  MsgBox "Filen hittades inte." & vbCrLf & vbCrLf & strFileName, vbExclamation + vbOKOnly, "Fel"
End If

Så gör jag för att öppna Autocadritningar från Access och det fungerar väldigt smidigt måste jag säga :)

Medlem sedan mars 20042 inlägg
#3

tack...

...för hjälpen! skall testa det under morgondagen. hopas att det skall lösa sig. återkommer om det strular. :)

260 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)