Hi Kevin
You're welcome!
Please remember in future to give us an overview of what you want to achieve, because that helps us to give you a holistic solution J
Best wishes,
Graham
From: MS_Access_Professionals@yahoogroups.com <MS_Access_Professionals@yahoogroups.com>
Sent: Thursday, 21 March 2019 21:12
To: MS_Access_Professionals@yahoogroups.com
Subject: Re: [MS_AccessPros] How the get the path.
Dear Graham,
I just test it. It works great! Thank you so very much!
Best Regards,
Kevin
On 21-Mar-2019 12:31 PM, graham@mandeno.com [MS_Access_Professionals] wrote:
Hi Kevin
It helps to give a bit more overview of what you are trying to achieve. I'm going to have to guess that you have a field which contains a path which is relative to the location of your database (CurrentProject.Path).
So, let's say CurrentProject.Path is C:\Users\Documents\Databases\MyProject:
If the relative path is SubfolderA\SubfolderB, then the desired result is:
C:\Users\Documents\Databases\MyProject\SubfolderA\SubfolderB
If the relative path is ..\..\SubfolderC\SubfolderD, then the desired result is:
C:\Users\Documents\SubfolderC\SubfolderD
Is my assumption correct?
If so, then you should use a loop, checking for "..\" at the beginning of the relative path. For as long as it is there, you use Mid() to strip it off and use ParentPath to go up another level from CurrentProject.Path. When there are no more "..\" to be found, you append what is left of the relative path to what is left of CurrentProject.Path, with a backslash between.
(Please note that this is "air code" - I am writing it off the top of my head and haven't tested it!)
Dim strAbsolutePath as String
Dim strRelativePath as String
strAbsolutePath = CurrentProject.Path
strRelativePath = <some value from a field?>
Do While Left( strRelativePath, 3 ) = "..\"
strAbsolutePath = ParentPath( strAbsolutePath )
strRelativePath = Mid( strRelativePath, 4 )
Loop
strAbsolutePath = strAbsolutePath & "\" & strRelativePath
You could even put this code in a Function AddRelativePath( AbsPath as String, RelPath as String) as String
Best wishes,
Graham
---In MS_Access_Professionals@yahoogroups.com, <qingqinga@...> wrote :Dear Graham,
I have one more question, Suppose the path is like this: "..\..\" Is that possible to count how many "..\" there is, if that it is possible, so combining the ParentPath function I will be able to get the actual path of a file with "..\" or "..\..\" or even more "..\..\..\". Thanks in advance.
Best Regards,
KevinOn 21-Mar-2019 7:46 AM, graham@... [MS_Access_Professionals] wrote:
Hi Kevin
InStrRev() searches back from the end of a string until it finds a given character (or string) and it returns the position of that character. You can use this to find the last backslash in the path, and then use the Left() function to cut off the end of the path, including the backslash you have found.
It pays to use Len(Path) - 1 to start your search one character back from the end, just in case the last character is already a backslash.
Now you should understand how this function works:
Public Function ParentPath(ByVal Path As String) As String
ParentPath = Left(Path, InStrRev(Path, "\", Len(Path) - 1) - 1)
End Function
Best wishes,
Graham Mandeno [Access MVP 1996-2016]
---In MS_Access_Professionals@yahoogroups.com, <qingqinga@...> wrote :Dear Duane,
Thanks a lot. Yes. That's exactly what I want. I have tried instrRew(), but I didn't get the result I want. I only know a little about it. I'll try again and again to get the expected result.
Best Result,
Kevin
发自 WPS邮箱客戶端
在 "Duane Hookom duanehookom@... [MS_Access_Professionals]" <MS_Access_Professionals@yahoogroups.com>,2019年3月21日 01:05写道:
Hi Kevin,
So you want the current project path without rightmost folder name?
If this is the case you can use InstrRev() function
https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2008/t2ekk41a(v=vs.90)
Duane
From: MS_Access_Professionals@yahoogroups.com <MS_Access_Professionals@yahoogroups.com> on behalf of qingqinga qingqinga@... [MS_Access_Professionals] <MS_Access_Professionals@yahoogroups.com>
Sent: Wednesday, March 20, 2019 11:15 AM
To: MS_Access_Professionals@yahoogroups.com
Subject: Re: [MS_AccessPros] How the get the path.
Dear Domenico,
Thanks for your reply. My point is to only get the path without the folder where the current project locates. Desktop is not the case.
Best Regards,
Kevin
发自 WPS邮箱客戶端
在 "Domenico Cozzolino domcoz@... [MS_Access_Professionals]" <MS_Access_Professionals@yahoogroups.com>,2019年3月20日 15:31写道:
path = Environ("USERPROFILE") & "\Desktop"
Ciao Domenico
Il giorno mer 20 mar 2019 alle ore 07:24 crystal 8 strive4peace2008@... [MS_Access_Professionals] <MS_Access_Professionals@yahoogroups.com> ha scritto:
hi Kevin,
'~~~~~~~~~~~~~~~~~~~
Function GetDesktopPath() As String
'170423 crystal
Dim oShell As Object
Set oShell = CreateObject("WScript.Shell")
GetDesktopPath = oShell.SpecialFolders("Desktop")
Set oShell = Nothing
End Function
'~~~~~~~~~~~~~~~~~~~
have an awesome day,
crystal
free code you can use in your projects
https://msaccessgurus.com/code.htm
On 3/20/2019 12:02 AM, Kevin qingqinga@...
[MS_Access_Professionals] wrote:
> Dear All,
>
> With CurrentProject.path, I got this: C:\Users\mrzha\Desktop\FileFolder,
> My question is how to get :"C:\Users\mrzha\Desktop" ? Thanks in advance.
>
> Best Regards,
> Kevin
>
>
>
> ------------------------------------
> Posted by: Kevin <qingqinga@...>
> ------------------------------------
>
>
> ------------------------------------
>
> Yahoo Groups Links
>
>
>
Posted by: "Graham Mandeno" <graham@mandeno.com>
Reply via web post | • | Reply to sender | • | Reply to group | • | Start a New Topic | • | Messages in this topic (15) |
Tidak ada komentar:
Posting Komentar