Jag har gjort ett program och när en del kör det så får dom upp felmeddelandet "Run-time error '364': Object was unloaded". Det händer aldrig för mig, vare sig i VB eller den kompilerade versionen, så jag vet inte riktigt vart felet ligger. Har ditt formulär flera formulär? Ja jag har flera fönster i programmet. Form1 är alltid laddad under hela tiden som programmet körs. Form2 visar meddelanden lite då och då. Testa att lägga in detta i Form_Load på varje formulär. På vilket sätt skulle det där lösa problemet? Programmet körs bara en gång så App.PrevInstance kommer alltid att vara False. Ok. Flera Form2 kan i alla fall existera samtidigt, även fast det är ganska sällsynt. De som får fel, får de alltid fel eller fungerar det ibland? Jag skulle gissa på att sökvägen inte stämmer på de datorer som det inte fungerar på, eller att det inte finns någon databas med det namnet i just den mappen: Dom som får fel får alltid det felet. Jag har nog glömt att säga att felet inträffar när man avslutar programmet, så databasen och allt annat fungerar perfekt fram tills dess. Nu har problemet löst sig. Det var en splashscreen som var boven i dramat. Varför det inte blev fel för alla vet jag dock inte... Skönt det löste sig. Om detta dock är en komponent för webben rekommenderar jag dig att inte använda dina dataanslutningar på detta sätt, dvs hålla de öppna. Gäller det webben så skall de stängas så fort det någonsin går. Är det windows-applikation är det oftast inte lika kritiskt då oftast färre personer kör systemet. Det är ett Windows-program. Programmet läser av databasen typ en gång i minuten, är det ändå vettigt att starta och stänga databasanslutningen varje gång? JA, för connectionpooling gör att den (förmodligen) ändå ligger kvar, och dina objekt är det enda som städas. Minnesläckage borta, men snabba connections"Run-time error '364': Object was unloaded"
Det enda objektet jag har är ADODB och vad jag kan se så sköts väl allt rätt där?
<code>
Option Explicit
Global Con As ADODB.Connection
Global RS As ADODB.Recordset
Public Sub StartADO()
Set Con = New ADODB.Connection
Set RS = New ADODB.Recordset
Con.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & App.Path & "\databas.mdb"
End Sub
Public Sub EndADO()
On Local Error Resume Next
Con.Close
RS.Close
Set Con = Nothing
Set RS = Nothing
End Sub
</code>
<code>
Private Sub Form_Load()
StartADO
End Sub
Private Sub Form_Unload(Cancel As Integer)
EndADO
End Sub
</code>
Nån som har någon aning om vad felet kan vara?
ThomasSv: "Run-time error '364': Object was unloaded"
Tex om du har form1 öppet och form2 öppnas från form1 och form2 stängs men inte laddas ur minnet på rätt sätt så har form1 en ogiltig referens kvar vilket kan leda till att ett objekt inte laddas ner rätt.Sv:"Run-time error '364': Object was unloaded"
I Form_Unload på Form1 har jag därför lagt in:
<code>
Dim i As Long
For i = Forms.Count To 1 Step -1
Unload Forms(i - 1)
Next i
</code>
Men om det vore nått fel i koden som gör att Form2 inte laddas ur rätt så borde väl alla råka ut för det?
Dom som får felet får det däremot varje gång...
ThomasSv: "Run-time error '364': Object was unloaded"
If App.PrevInstance Then
MsgBox "Detta formulär körs redan", vbOkOnly
End
End IfSv:"Run-time error '364': Object was unloaded"
ThomasSv:"Run-time error '364': Object was unloaded"
Jag har funderat lite och kommit fram till att det inte *borde* vara något problem som har med Form2 att göra då felmeddelandet visas även när man avslutar programmet direkt efter start (då Form2 aldrig har visats).
ThomasSv: "Run-time error '364': Object was unloaded"
<code>Con.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & App.Path & "\databas.mdb"
</code>Sv:"Run-time error '364': Object was unloaded"
ThomasSv: "Run-time error '364': Object was unloaded"
ThomasSv:"Run-time error '364': Object was unloaded"
Sv: "Run-time error '364': Object was unloaded"
ThomasSv:"Run-time error '364': Object was unloaded"
/micke