Avatar billede juks Novice
07. april 2003 - 11:47 Der er 14 kommentarer og
1 løsning

drop-downboks hvor man kan vælge filerne

jeg vil gerne lave sådan at man har en (*.mdb) der ligger i samme mappe som ens  nuværende backend.
uden brug af active-x componeter
Avatar billede terry Ekspert
07. april 2003 - 13:00 #1
thats going to need an explanation juks!
But if this is what your after then no need
http://www.mvps.org/access/api/api0001.htm
Avatar billede nih Novice
07. april 2003 - 15:30 #2
Jeg bruger en omskrivning fra orders.mdb
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/bapp2000/html/mdbdownload.asp

Den tjekker linket til een af tabellerne
Hvis ikke OK leder den efter backend i samme mappe
Hvis den ikke finder den åbnes windows common filedialog

Niels
Avatar billede juks Novice
07. april 2003 - 16:33 #3
sorry det var ren vås terry , jeg vil gerne have en combobox hvori jeg kan se alle de mdb- filer der ligge i samme mappe som den backend , database der bliver brugt af min frontend
Avatar billede nih Novice
07. april 2003 - 18:40 #4
Option Compare Database
Option Explicit

Sub fyldliste()
    Dim sti As String
    Dim dbNavn As String
    sti = CurDir & "\"
   
    dbNavn = Dir(sti)
    Do While dbNavn <> ""
        If Right(dbNavn, 3) = "mdb" Then
            Liste1.RowSource = Liste1.RowSource & dbNavn & ";"

        End If
    dbNavn = Dir
Loop

End Sub

Private Function RefreshLinks(strFileName As String) As Boolean


    Dim dbs As DAO.Database
    Dim tdf As DAO.TableDef
    Dim intCount As Integer

On Error GoTo ErrorHandler


    Set dbs = CurrentDb
    For intCount = 0 To dbs.TableDefs.Count - 1
        Set tdf = dbs.TableDefs(intCount)

        If Len(tdf.Connect) > 0 Then
            tdf.Connect = ";DATABASE=" & strFileName
            Err.Number = 0
           
            On Error Resume Next
            tdf.RefreshLink
           
            If Err.Number <> 0 Then
                RefreshLinks = False
                Exit Function
            End If
        End If
    Next intCount

    RefreshLinks = True
    Exit Function
   
ErrorHandler:
    MsgBox "Error#:  " & Err.Number & vbCrLf & Err.Description
    RefreshLinks = False
End Function

Private Sub Form_Open(Cancel As Integer)
fyldliste
End Sub

Private Sub Liste1_DblClick(Cancel As Integer)
RefreshLinks (Liste1)
End Sub
Avatar billede nih Novice
07. april 2003 - 18:42 #5
på en form skal du have en liste: liste1 og rækkekilde sættes til værdiliste

listen fyldes når formen åbnes
ved dobbeltklik relinkes alle tabeller til den db du vælger
Avatar billede nih Novice
07. april 2003 - 18:49 #6
Private Sub Form_Open(Cancel As Integer)
Liste1.RowSource = ""
fyldliste
End Sub

Man skal vist lige tømme listen :)

Function GetPath() As String
    Dim Pos As Integer, Path As String
    Path = CurrentDb.Name
    Pos = Len(Path)
    Do Until Mid(Path, Pos, 1) = "\"
        Pos = Pos - 1
    Loop
    GetPath = Left(Path, Pos)
End Function

er måske bedre at bruge end curdir

Husk desuden reference til DAO
Avatar billede juks Novice
07. april 2003 - 19:17 #7
nih :  jeps lige hvad jeg søgte .. næsten , for at gøre det 100 % bruger venligt , har du ikke løsningen på at CurDir skal være samme mappe som backenden.
Avatar billede nih Novice
07. april 2003 - 19:19 #8
sti = getpath

getpath finder du i min komentar 07/04-2003 18:49:12
Avatar billede juks Novice
07. april 2003 - 19:22 #9
også lige som et svar så du kan få point
Avatar billede nih Novice
07. april 2003 - 19:24 #10
ok
Avatar billede juks Novice
07. april 2003 - 19:30 #11
men nih , det du har vist mig er perfekt.. næsten , for at gøre det 100 % bruger venligt , skal stien være i samme mappe som backenden.

frontenden og backenden ligge i forskellige mapper
Avatar billede juks Novice
07. april 2003 - 19:55 #12
det med at finde back-enden er et stort problem for mig og desuden virker det med refresh af backend ikke men har den del af det med at refreshe.
Avatar billede nih Novice
07. april 2003 - 20:33 #13
denne function finder backend:

Function getBackend() As String
    Dim db As DAO.Database
    Dim s As String
    Dim Pos As Integer, i As Integer
   
    Set db = CurrentDb
       
    For i = 0 To db.TableDefs.Count - 1
        If Len(db.TableDefs(i).Connect) > 0 Then
            s = db.TableDefs(i).Connect
            Exit For
           
        End If
    Next i
   
   
    Pos = Len(s)
    Do Until Mid(s, Pos, 1) = "\"
        Pos = Pos - 1
    Loop
    s = Left(s, Pos)
   
    s = Mid(s, InStr(s, "=") + 1)
   
    getBackend = s
   
End Function
Avatar billede nih Novice
07. april 2003 - 20:34 #14
Jeg havde lige nogle børn der skulle i seng
Avatar billede juks Novice
07. april 2003 - 20:40 #15
tak hjælpen tror jeg klare den fra heraf
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