Avatar billede hekla Nybegynder
31. marts 2004 - 19:21 Der er 8 kommentarer og
2 løsninger

Filnavn til Save As dialog

Jeg har en funktion til at hente navn og sti på backend (http://www.eksperten.dk/spm/456482 ) og nu vil jeg gerne have filnavnet sendt videre til Save As dialogen i http://www.mvps.org/access/api/api0001.htm

How to do?
Avatar billede terry Ekspert
31. marts 2004 - 19:57 #1
Hi hekla,
I havent used this dialog so I'm only guessing here.

If you look at the function there are a number of optional parameters, th eone you are interested in is I think this one (Optional ByVal FileName As Variant)

so you need to put the file name in the 6th parameter when you call the function
)
31. marts 2004 - 20:54 #2
Hvad mener du præcis med at "Sende videre til" Save As-Dialogboksen?

Vil du gemme noget oven i denne fil, mens den er aktiv?

Men jeg vil tro, at du skal skrive sådan:
strFilter = ahtAddFilterItem(myStrFilter, "Access Files (*.mdb)", "*.mdb")
strSaveFileName = ahtCommonFileOpenSave( _
                                    Filename:=fGetLinkPath("t_barn2"), _
                                    OpenFile:=False, _         
                                    Filter:=strFilter, _
                                    Flags:=ahtOFN_OVERWRITEPROMPT Or ahtOFN_READONLY)

Blot et skud i tågen ud fra hvad jeg ville gøre med min egen CommonDialog-funktion på: http://www.makeiteasy.dk/eksempler/Downloads.htm
Avatar billede hekla Nybegynder
31. marts 2004 - 22:09 #3
Nej det dur ikke rigtigt. FileName er som de skriver:
' FileName: Default value for the file name text box.
altså det navn, der står som default i tekstboksen.

Det, jeg mangler, er inputtet til Save As dialogen, dvs. jeg skal have fortalt den, at den fil, jeg vil gemme en kopi af, er f.eks fGetLinkPath("t_barn2") eller "c:\Minedatabaser\MyDB_be.mdb". FileName kan kun bruges til at foreslå et navn til kopien.
31. marts 2004 - 22:13 #4
Det kan godt være, at jeg ikke tænker så hurtigt her til aften, men ønsker du ikke at brugeren skal få åbnet en SaveAs-dialogboks, hvor han kan vælge et filnavn at gemme i??

Eller ønsker du blot at gemme filen i c:\Minedatabaser\MyDB_be.mdb hver gang?
Avatar billede hekla Nybegynder
31. marts 2004 - 22:27 #5
Det jeg ønsker, er at gemme en kopi (=backup) af backend-filen, hvis navn jeg får fra fGetLinkPath("t_barn2"), men jeg kan ikke få den til at virke. Der kommer ingen fejlmeddelelser, og der bliver ikke gemt en kopi.

Jeg kan debugge mig frem til at fGetLinkPath("t_barn2") virker som den skal og returnerer navnet på min backend, men jeg kan ikke finde ud af, hvor jeg skal putte den ind i koden.
31. marts 2004 - 22:52 #6
Okay, jeg vil lige have slået én fast: Open/Save-dialogboksen gemmer ikke noget som helst!! Den bruges kun til at brugeren kan udpege en placering og et filnavn, som applikationen derefter kan bruge til et eller andet.

Så hvis du du allerede ved hvad du skal kopiere fra og til, så glem alt om Open/Save-dialogboksen. brug i stdet blot FileCopy-funktionen:
filecopy fGetLinkPath("t_barn2"), "c:\Backup\MyDB_be.mdb"
31. marts 2004 - 22:56 #7
(denne løsning er selvfølgelig lige risikabel, da der KAN opstå fejl i filen, når den kopieres under brug. Men som regel er der ingen problemer med denne metode)
Avatar billede hekla Nybegynder
31. marts 2004 - 23:01 #8
hmm... Det var ikke så godt, men det er godt at vide!

Meningen var at brugeren selv skulle kunne bestemme, hvor han/hun ville gemme sin backup, men man kan måske bruge ideen alligevel. Dvs. at man skal have resultatet trukket ud af funktionen, så man kan bruge det til filecopy.
31. marts 2004 - 23:09 #9
ja, det kan du sagtens. Det var også sådan jeg først troede at du ville bruge den.
Derfor kan du bruge den kode, som jeg skrev tidligere. F.eks.:
strFilter = ahtAddFilterItem(myStrFilter, "Access Files (*.mdb)", "*.mdb")
strSaveFileName = ahtCommonFileOpenSave( _
                                    Filename:="C:\Backup\MyDB_be " & format(Date, "yyyymmdd") & ".mdb", _
                                    OpenFile:=False, _         
                                    Filter:=strFilter, _
                                    Flags:=ahtOFN_OVERWRITEPROMPT Or ahtOFN_READONLY)
If len(strSaveFileName) > 0 then
    Filecopy fGetLinkPath("t_barn2"),strSaveFileName
endif
Avatar billede hekla Nybegynder
31. marts 2004 - 23:54 #10
Så er den der. Takker for hjælpen.

Function Backup()
    Dim strFilter As String
    Dim lngFlags As Long
    Dim strBackup As String
    CurrentDb.TableDefs.Refresh
   
    strFilter = ahtAddFilterItem(strFilter, "Access Files (*.mdb)", "*.mdb")

    strBackup = ahtCommonFileOpenSave(InitialDir:=CurrentProject.Path, _
        Filter:=strFilter, FilterIndex:=3, OpenFile:=False, Flags:=ahtOFN_OVERWRITEPROMPT Or ahtOFN_READONLY, _
        DialogTitle:="Gem sikkerhedskopi som...")
If Len(strBackup) > 0 Then
    FileCopy fGetLinkPath("t_adgang"), strBackup
End If
End Function
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