I mitt program kan man spara och öppna filer. Dessutom skickr programmet data till och från en databas. Databasen är knuten till programmet och finns därför med i programmets installationsfil. Jag lägger databasen i samma mapp som exe-filen och anger i koden bara dess namn som sökväg. Ange hela sökvägen till databasen. T.ex. kan man använda sig av sökvägen till exe-filen på detta vis: Funkar! Bra tips. En vanlig användare har inte skrivrättigheter alls i programmappen (C:\Program\ i vanliga fall), så all typ av redigering av filer kommer misslyckas. Var kan man lämpligen lägga databasen om man vill att den ska vara åtkomlig via programmet för alla typer av användare? Finns det något tillförlitligt standardställe? Under "All users" "Application data" eller "local settings/application data"? Jag kan tänka mig att man kan stöta på trubbel om man lägger databasen i t.ex. C:\Documents and Settings\All Users och användaren har icke-engelska inställningar på sitt operativsystem. <b>Jag kan tänka mig att man kan stöta på trubbel om man lägger databasen i t.ex. C:\Documents and Settings\All Users och användaren har icke-engelska inställningar på sitt operativsystem.</b>Problem med relativ sökvägar
Detta funkar bra tills man öppnar en fil i programmet. När man öppnar filen ändras på något sätt programmets sökväg till databasen. Programmet vet alltså inte längre att databasen ligger i exe-filsmappen, utan tror istället att databasen ligger i samma map som den fil man just öppnat.
Hur får man bukt med detta tråk?
/Peter
Sv: Problem med relativ sökvägar
sökväg = System.IO.Path.GetDirectoryName(Application.ExecutablePath) + "\\databas.mdb";
Tänk dock på att man inte kan redigera databasen om man inte är admin om programmet ligger under programmappen.
/JohanSv:Problem med relativ sökvägar
Lite jobbigt med restriktionen dock. Gäller den bara redigeringar via Access eller gäller den alla typer av redigeringar, t.ex. att man via min applikation lägger till en rad i en tabell?
/PeterSv: Problem med relativ sökvägar
/JohanSv:Problem med relativ sökvägar
Sv: Problem med relativ sökvägar
Sv:Problem med relativ sökvägar
Kan man göra det på något totalt allmänngiltigt sätt? Kanske borde man lägga den direkt på C:, men det verkar inte särskillt snyggt och man kanske inte kan utgå ifrån att alla har en hårddisk kallad C: (eller jo, det måste man väl kunna utgå ifrån?)Sv: Problem med relativ sökvägar
Man ska givetvis inte hårdkoda sökväg, använd istället de api:er som finns för att hämta aktuell sökväg för datorn programmet körs på: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemenvironmentspecialfolderclasstopic.asp
<b>Kan man göra det på något totalt allmänngiltigt sätt?</b>
Se ovan
<b>Kanske borde man lägga den direkt på C:, men det verkar inte särskillt snyggt</b>
Nej, dessutom har användaren inte skrivrättigheter här heller...
<b>och man kanske inte kan utgå ifrån att alla har en hårddisk kallad C: (eller jo, det måste man väl kunna utgå ifrån?)</b>
Nej, det behöver inte finnas en c:.
/Johan