Försöker enligt koden nedanför att ansluta till en Accessdatabas... Ganska enkelt att förstå, Men hur att få det rätt. ? Tycker det vore lite smartare att kolla om Access-filen finns innan du skickar argumentet till OpenDatabase()... Eftersom du inte har angett hela sökvägen så gissar jag att programmet utgår från den aktuella path:en, vad det är beror på var du gjort tidigare i programmet, var programfilen är lagrad och vad programmets genväg har för egenskaper. Men som redan sagts så tycker jag att du ska ta reda på om filen existerar innan du försöker öppna den! Jag tar det från början då... Heter din program mapp 'Program' på din "vanliga dator"? Eller heter den tex 'Program Files'? Program... Problemet är ju att den inte kommer till 2 sökvägen överhuvud taget... Gå på Brännströms förslag! Jo jag får la köra på det... Men det vore ändå trevligt att få reda på varför det inte funkar just här... Eftersom du inte deklarerar något eller visar hur "OpenDatabase" ser ut är det förstås svårt att svara. Men som jag skrev lite längre upp... On Error Goto fungerar på min andra dator... Och på alla datorer som kört programmet från den datorns hårddisk... Nej, det är det inte, om vi säger, med 90% sannolikhet. Förmodligen stänger du av den vid något tillfälle. <b> Hatar olösta problem </b> Men om det då är logik vi har med att göra, varför funkar det då på min ena dator och på den andra fungerar det inte med samma projekt... Den grundläggande frågan är ju var ligger ? Alltså så här bör det skrivas Ang problemt med On Error Goto så kom förslaget FileExists som en bättre lösning. Ännu bättre vore det med en FileIsWriteable() metod i början eftersom man måste har skrivrättigheter för att det ska funka ändå.. räcker ju inte att filen FINNS :) Det kan ju faktiskt vara det som är fel från början(??). T.ex i Vista har ju en vanlig User inte rätt att skriva i %programfiles%-mappen. Ja det är rätt, finns många vinklar på en plog. <b>Datafiler bör man lägga nånstans under %appdata% nu för tiden. </b> Det är inte en Microsoft/Vista-grej. De är snarare väldigt sena med detta. <b>förhindra virus, eftersom det är .exe-filer som ofta blir angripna.</b> Ville mest förklara för dig på ett sätt som du förstår, för det verkar som du tror Microsoft blockerar åtkomst till filer mest för att det är kul och för att jävlas. Sven: Det är bra att det blir lite ordning på vem som får skriva var, ur bland annat säkerhetssynpunkt, men även av andra anledningar. T.ex. att man köra ett program på ett företagsnätverk och man vill att programmens information inte ska vara låst till en dator utan till en viss användare (oberoende av dator.) Eller att man kanske inte vill att någon annan användare av datorn ska kunna läsa mina filer. Eller att man enkelt vill kunna göra backup av allting viktigt utan att behöva handplocka några datafiler, eller kopiera alla installerade program. <b>för det verkar som du tror Microsoft blockerar åtkomst till filer Förstår att man måste ha säkerhet i stora nätverk. De som inte är idioter, kan enkelt stänga av denna säkerhet i Vista (UAC) och på så sätt ha skrivrättigheter till alla filer :-) Sven: Det är enkelt: Program på ett ställe, information på ett annat. Varför blanda? <b>>Program på ett ställe, information på ett annat. Varför blanda?</b>On Error Goto.....
Att jag har 2 sökvägar beror på att jag kör programmet över nätverk och då hamnas mdb filen på servern...
Men det är inte huvudfrågan...
Min fråga är.. VARFÖ fungerar inte On Error GoTo delen??
När jag kör på den ena datorn så fungerar det och på den andra inte...
Den det inte fungerar på får Runtimefel 3044 och det är på den första OpenDatabase raden...
Ideer??
Sub AnslutDatabasen()
On Error GoTo DatabaseErrHandeling
Filen = "Databas\DragTime.mdb"
Set db = OpenDatabase(Filen)
GoTo Klart
DatabaseErrHandeling:
Filen = "C:\Program\DragTime\Databas\DragTime.mdb"
Set db = OpenDatabase(Filen)
Klart:
End SubSv: On Error Goto.....
3044 "Item isn´t a valid path.
Sökvägen för nätverkskörning är felaktig.Sv: On Error Goto.....
Sv: On Error Goto.....
/JohanSv: On Error Goto.....
Om jag sitter och programmerar och kör Run så kör den ju programmet ifrån typ 'C:\program\vb6\.....osv' och kör jag då första sökvägen då hittar den ju inte någon databasfil... Då kör den istället den andra sökvägen alltså 'C:\Program\DragTime\Databas\DragTime.mdb'......
Fint kanske en del tänker... kör alltid den...
Men problemet är att det färdiga programmet ligger i 'C:\Program\DragTime' och det funkar för mig att köra hela sökvägen men programmet skall köras av flera personer med samma databasfil och kör de den sista sökvägen så letar ju programmet efter databasfilen som ligger på deras hårddisk 'C:\Program\DragTime\Databas\DragTime.mdb' och den finns ju inte..
Det är enkelt att ändra länken MEN så J***A lätt att glömma det när man kompilerar....
Den första sökvägen måste köras för att kunna köra programmet från nätverket.... alltså '[ProgrametsPlats]\Databas\DragTime.mdb'...
Då har jag på detta sätt med On Error Goto löst det på min bärbara dator.. Men det fungerar inte på min vanliga dator...
Varför funkar inte On Error Goto?Sv:On Error Goto.....
Sv: On Error Goto.....
Hittar den inte sökväg 1 så skall den ju ta sökväg 2.... Men stannar vid 1an...Sv:On Error Goto.....
<code>if dir("sökväg till första filen") <> "" then
använd denna databasfil
else if dir("sökväg till andra alternativet") <> "" then
kör denna istället
else
filen står nog i kylskåpet
end if</code>Sv: On Error Goto.....
Finns det inställningar för On Error Goto??Sv:On Error Goto.....
Hur som helst: On Error Goto fungerar - det är du som har gjort fel (att vb6 och tidigare sen har världens sämsta felhantering är ju en annan sak)Sv: On Error Goto.....
Det är ju bara på min hemdator det inte fungerar....
Finns det någon inställning som kan varafel på min hemdator??Sv:On Error Goto.....
Sv: On Error Goto.....
Djä... Niklas det är inget fel på Error hantering i VB.
De är du som inte förstår hur man tar itu med felen.
Tycker det är "snobberi" som har/vet något om felhantering.
Logik är svaret !Sv:On Error Goto.....
Sedan hur jag löser mitt problem är upp till mig men jag kommer nog köra med att kolla om filen finns..
Men jag vill fortfarande veta varför det inte går...
Så kom gärna med lite ideer vad jag kan titta på och idiotförklara inte bara hela tiden..
Jag kanske är nyfiken på varför och inte bara lära sig alla vägar runt alla grejer som inte fungerar som skall fungera....Sv: On Error Goto.....
DatabaseErrHandeling:
Den skall klart ligga i
Sub AnslutDatabasen()
Därifrån gör det ett Call till SubRutin som behandlar fel eller gör en MsgBox som beskriver felet.
Och avslutar med
On Error Goto 0
Så här bör det se ut i slutet på Sub AnslutDatabasen ex.
<code>
OkOpenDb:
Exit Sub
DatabaseErrHandeling:
MsgBox "Fel i vid AnslutDatabas"
'Eller mer proffsigt Call MinDbError(Err)
'där du behandlar alla typer av fel beronde på Err
Resume OkOpenDb
End Sub
</code>Sv:On Error Goto.....
<code>
Sub AnslutDatabasen()
On Error GoTo DatabaseErrHandeling
Filen = "Databas\DragTime.mdb"
Set db = OpenDatabase(Filen)
Klart:
Exit Sub
DatabaseErrHandeling:
'Det tokiga är om det blir fel här så är du inne i en ond cirkel.
Filen = "C:\Program\DragTime\Databas\DragTime.mdb"
Set db = OpenDatabase(Filen)
On Error GoTo 0 'nollställ felet
Resume Klart
End Sub
</code>Sv: On Error Goto.....
Håller med.
Den här rutinen har jag använt ett antal gånger och den fungerar Ok.
<code>
Private Sub FileExists(ByVal inPath As String)
Dim Fnum As Long
Fnum = FreeFile
On Error Resume Next
Open inPath For Input As #Fnum
Select Case Err
Case Is = 0
MsgBox "File Ok"
'do your stuff
Case Is = 53
MsgBox "File not found"
'do your stuff
Case Is = 55
MsgBox "File already open"
'do your stuff
End Select
Close #Fnum
End Sub
</code>Sv:On Error Goto.....
BTW. Datafiler bör man lägga nånstans under %appdata% nu för tiden. Sv: On Error Goto.....
Jag löser det med en ,i min kod ovan
<code>
Case Is= 70
MsgBox "Permission denied"
' gör något
'..........
</code>Sv:On Error Goto.....
Det är MS/Vista "bullshit" . Det köper inte Jag/Vi
Om Vi gör en applikation som innehåller DataBas :er så lägger Vi dessa i samma mapp som .exe
Möjligtvis kan jag sträcka mig till att ha en undermapp "AppData" där dom får ligga.
Man skall alltid kunna nå dom med App.Path i första steg.
Vi lägger alltid tillhörande egna .DLL .er och .ini filer i samma mapp som .exe
Sven som skiter blankt i MS "styr och ställ" fasoner.
Vi accepterar att dll:er mfl. skall ligga i Sytstem32 och .sys skall ligga i Drivers men! sen är det NOCK !Sv: On Error Goto.....
Många plattformar tillåter inte att användaren har skrivrättighet till program-mappen. Det är ett väldigt effektivt sätt att förhindra virus, eftersom det är .exe-filer som ofta blir angripna.Sv:On Error Goto.....
mmmm.... gulle gulle har mamma berättat det för dig.
Phuuuuuuuuuuuu vilket bullshit man får läsa.Sv: On Error Goto.....
Sv: On Error Goto.....
Sv:On Error Goto.....
mest för att det är kul och för att jävlas.</b>
Näääääääääääääääää tror jag inte. Men dom tror att Vi användare är indoiter :-)
"Hasse Alfredsson"Sv: On Error Goto.....
Men ! Tänk enkelt. Läser så mycket "bull" så jag garvar läppen sned.Sv:On Error Goto.....
Sv:On Error Goto.....
Sv: On Error Goto.....
Säg det till lisp.
;-)