Avatar billede hekla Nybegynder
23. april 2003 - 13:49 Der er 13 kommentarer og
2 løsninger

specialfolder i outputto

Jeg har brug for at kunne skrive til en maskines default tmp-folder i forbindelse med en fil, som genereres, når jeg kopierer en rapport til rtf-format med:

DoCmd.OutputTo acReport, stDocName, acFormatRTF, "c:\minfil.rtf", -1

Jeg kunne forestille mig noget a la:

DoCmd.OutputTo acReport, stDocName, acFormatRTF, $tmp & "r_allebarn_sidste_dogn.rtf", -1

men det virker ikke.

Er der nogen der ved hvordan man gør det?
Avatar billede hekla Nybegynder
23. april 2003 - 13:50 #1
r_allebarn_sidste_dogn.rtf = minfil.rtf

:o)
Avatar billede terry Ekspert
23. april 2003 - 14:02 #2
your going to have to have a system call to get this value.This amy also be different depending on the user logged in!
Avatar billede hekla Nybegynder
23. april 2003 - 14:15 #3
Jeg kan godt se, at man skal bruge et API call, men jeg har ingen ide om, hvordan syntaksen er.
Avatar billede venne Nybegynder
23. april 2003 - 15:30 #4
Det er ikke nødvendigt med et API-kald - det er nok med FileSystemObject. Lav en reference til Microsoft Scripting Runtime under Tools - References. Herefter kan temp-mappen findes med:

Dim fso As New FileSystemObject
sTempMappe = fso.GetSpecialFolder(TemporaryFolder)

/venne
Avatar billede hekla Nybegynder
23. april 2003 - 20:45 #5
Jeg kan godt lave en funktion, som får tmp-stien frem i en msgbox med både API call og fso, men hvordan får jeg stien ind i outputto linien?
Avatar billede terry Ekspert
23. april 2003 - 20:50 #6
DoCmd.OutputTo acReport, stDocName, acFormatRTF, fso.GetSpecialFolder(TemporaryFolder)
& "r_allebarn_sidste_dogn.rtf", -1
Avatar billede terry Ekspert
23. april 2003 - 20:50 #7
I think you may need a \ just before the file name too!

Did you find a API call?
Avatar billede hekla Nybegynder
23. april 2003 - 21:01 #8
Jeg fandt et API call på http://msdn.microsoft.com/library/default.asp?url=/library/en-us/modcore/html/deovrwhyusevbatocallwindowsapi.asp

Private Declare Function GetTempPath Lib "kernel32" _
        Alias "GetTempPathA" (ByVal nBufferLength As Long, _
        ByVal lpBuffer As String) As Long
Avatar billede hekla Nybegynder
23. april 2003 - 21:28 #9
Jeg endte med at få følgende til at virke:

    Dim stDocName As String
    Dim tmppath As String
    Dim fso As New FileSystemObject

    stDocName = "r_minrapport"
   
    DoCmd.OutputTo acReport, stDocName, acFormatRTF, fso.GetSpecialFolder(TemporaryFolder) & "\minfil.rtf", -1

Tak for hjælpen begge to!
Avatar billede terry Ekspert
23. april 2003 - 21:29 #10
Hi hekla, I dont seem to be able to get that API call to work! I'm using XP and have a feeling thats the problem. Any chance of seeing the code you use?
Avatar billede hekla Nybegynder
23. april 2003 - 21:32 #11
Jeg prøvede forskellige muligheder med denne uden at få det til at virke:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odeopg/html/deovrreturningstringsfromdllfunctions.asp

Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _
  (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

Property Get GetTempFolder() As String
  ' Returns the path to the user's Temp folder. To boot, Windows
  ' requires that a temporary folder exist, so this should always
  ' safely return a path to one. Just in case, though, check the
  ' return value of GetTempPath.
 
  Dim strTempPath As String
  Dim lngTempPath As Long
 
  ' Fill string with null characters.
  strTempPath = String(144, vbNullChar)
  ' Get length of string.
  lngTempPath = Len(strTempPath)
  ' Call GetTempPath, passing in string length and string.
  If (GetTempPath(lngTempPath, strTempPath) > 0) Then
      ' GetTempPath returns path into string.
      ' Truncate string at first null character.
      GetTempFolder = Left(strTempPath, _
        InStr(1, strTempPath, vbNullChar) - 1)
  Else
      GetTempFolder = ""
  End If
End Property
Avatar billede hekla Nybegynder
23. april 2003 - 21:34 #12
Jeg bruger også XP, men har også testet fso-funktionen på Win98. Den virker begge steder.
Avatar billede terry Ekspert
23. april 2003 - 21:51 #13
OK, now I have it working.

Try changing
Property Get GetTempFolder() As String
to
Function GetTempFolder() As String
and rememeber

End Function :o)

Then
DoCmd.OutputTo acReport, stDocName, acFormatRTF, GetTempFolder & "\minfil.rtf", -1
Avatar billede hekla Nybegynder
23. april 2003 - 23:27 #14
Den virker også. Skal man foretrække den ene frem for den anden?
Ved GetTempFolder metoden undgår man referencen til Microsoft Scripting Runtime, hvis det er en fordel.
Avatar billede terry Ekspert
24. april 2003 - 10:19 #15
I personally would go for the API call. As you say yourslef you dont need a reference and if your distributing the application on other PC's you can be sure that you dont get any missing references. On th eotherhand, if you find that one is faster than the other then it could be an idea to use that method.
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