Hej. Du kan ju lägga till en timer som är disabled och enabla den i unload: Applikationen uppdaterar en accessdatabas. När användaren stänger av programmet skall databasen backupas. Jag litar inte på att användaren backar upp sin dator själv. Så därför måste jag göra det automatisk. Det enda tillfället jag har är när han stänger sin applikation. Hur accessar du databasen? Datakontrollen och databindning, Data enviroment databindningar eller via DAO eller ADO objekten? Bilden visas med *Ler* Du vet väl om att "frmBackup.Show vbModal" inte fortsätter förän formuläret är stängt. Testa istället: *ler* också. Så du visar formuläret med "frmBackup.Show vbModal" vart ligger backupkoden? Ligger den efter "frmBackup.Show vbModal" kommer ju inget hända. Eller ligger den i "Form_Load" i "frmBackup"? Gur stänger du formulären? *lsih* Det kan iof sig göra. Men jag vill tala om för användaren att databasen packas och säkras. Ser han ingenting, kan han mycket väl stänga av datorn och då blir backupen paj. MEn om kommandot ligger i query unload kan su ha en timad splashscreen som berättar att programmet är busy. Ungefär som Outlook har. Jag hade en annan avstängning som funkade, dvs en quit knapp med lite logik bakom. Det var den knappen jag ville aktivera när användaren trycker på X knappen. Jaha, OK.Hur fånga en avstängning.
När jag stänger min applikation så är det sista som ska ske att en backup startas. Denna backup startas då automatiskt och den får inte avbrytas.
Om jag nu har en commandbutton som jag trycker på kan jag precis innan backupen starta ett sista formulär som talar om att backup pågår.
Om jag istället använder mig av terminate eventet på formuläret så hänger sig applikationen när jag slänger ut bilden och backupen startar inte.
Hur ska jag kunna döda termineringseventet så att jag kan lägga ut bilden eller hur skall jag göra för att lägga ut bilden när terminering är begärd.
Krångligt? Då ska ni se mina tester.:)
/StefanSv: Hur fånga en avstängning.
Option Explicit
Private Sub Form_Unload(Cancel As Integer)
Timer1.Interval = 1
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
MsgBox "Formuläret är stängt!"
End Sub
Finns ett smidigt sätt att få ett Application_Terminate. Kanske inte löser ditt problem. Eller så gör det de:
'Skapa ett nytt projekt
'Ändra Startup Objekt till Sub Main i projektegenskaperna
'Lägg till en modul
'Klistra in följande kod:
Option Explicit
Private mApplication As clsApplication
Public Sub Main()
Set mApplication = New clsApplication
Form1.Show
End Sub
'Lägg till en klass
'Döp om den till clsApplication
'Klistra in följande kod:
Option Explicit
Private Sub Class_Terminate()
Msgbox "Applikationen har avslutats!"
End Sub
Vad öär det din kod gör i unlaod eventet. Eller rättade sagt förklara lite mer vad den ska göra...Sv: Hur fånga en avstängning.
Så här gör jag:
CMD_Avsluta
flasha en bild.
kopiera databas
stäng bilden
unload
form1_Terminate
CMD_Avsluta
Bilden hänger sig och applikationen stannar när man trycker på X:et. trycker man CMD_Avsluta knappen funkar det.
En timer funkar inte.Sv: Hur fånga en avstängning.
Hur visar du bilden? Ett eget formulär eller en picturebox?
Testade du med en klass? Sv: Hur fånga en avstängning.
frmBackup.Show vbModal
alltså eget formulär. när detta formulär startas kopierar jag databasen. Därefter unloadar jag allt och programmet avbryts.
Databasen är inte problemet, den är stängd och jag kopierar med FileCopy commandot.
Har inte testat klass ännu.
/StefanSv: Hur fånga en avstängning.
<code>
frmBackup.Show
frmBackup.Refresh
Backup
Unload frmBackup
</code>Sv: Hur fånga en avstängning.
Det är ja mycket väl medveten om och det är inte det som är problemet. Formuläret startar inte ens när terminate eventet har triggats, det visas på skärmen och hela processen stannar.Sv: Hur fånga en avstängning.
Sv: Hur fånga en avstängning.
Jag fann lösningen via en annan fråga här.
I form_queryunload eventet sätter jag cancel till false.
/Stefan Sv: Hur fånga en avstängning.
/StefanSv: Hur fånga en avstängning.
/mSv: Hur fånga en avstängning.
Annars skulle jag mycket väl kunna lägga all kod i själva eventet.Sv: Hur fånga en avstängning.
I Query unload sätter du cancel till true, och sedan anropar du din avslutningsprocedur.
men... det har du ju redan kommit på...
/micke