Så här stänger du av ett anpassat Access-program via en fjärrstyrd anslutning
Anteckning
Office 365 ProPlus byter namn till Microsoft 365-appar för företag. Mer information om den här ändringen finns i det här blogginlägget.
Avancerat: Kräver expertkodning, interoperabilitet och fleranvändarfärdigheter.
Den här artikeln gäller endast för Microsoft Access-databaser (.mdb eller .accdb).
Sammanfattning
Ibland kan du behöva utföra underhållsåtgärder i en Microsoft Access-databas, till exempel komprimera eller reparera, göra säkerhetskopior eller göra designändringar. Många av dessa åtgärder kräver att alla användare avslutar databasen. Det finns dock inget inbyggt sätt att tvinga användare att avsluta Microsoft Access. Och det är inte en bra idé att bara koppla bort användaren från Nätverkslösningar. Det kan göra att databasen skadas.
Den här artikeln visar en metod som du kan använda för att stänga av ett Access-databasprogram på en frontend-server. Du kan också använda många av de här begreppen till att komprimera eller reparera databasen, göra säkerhetskopior och så vidare.
Microsoft tillhandahåller programmeringsexempel enbart i förklarande syfte och gör inga utfästelser, varken uttryckligen eller underförstått. Detta omfattar men begränsas inte till underförstådd garanti för säljbarhet eller lämplighet för ett visst syfte. I denna artikel förutsätts att du känner till det programmeringsspråk som demonstreras och de verktyg som används för att skapa och felsöka procedurer. Microsofts supportexperter kan hjälpa till att förklara funktionerna i en viss procedur, men de kommer inte att ändra dessa exempel för att tillhandahålla extra funktioner eller konstruera procedurer för att uppfylla dina specifika behov.
Mer information
Så här fungerar lösningen
Lösningen fungerar som följer. På en server finns det en fil i en mapp. Den här filen kan heta vad som helst. För den här lösningen används en fil med namnet chkfile.ozx. När filen får ett nytt namn eller tas bort får den ett meddelande om att Access-programmet måste stängas.
Ett formulär skapas som öppnas när användarna startar frontend-databasprogrammet. Det här formuläret kontrollerar att filen finns på servern med ett tidsintervall. Den använder egenskapen TimerInterval och händelsen OnTimer för att göra detta.
Inget händer om filen hittas. Om filen inte hittas visas ett annat formulär i formuläret som varnar användaren om att databasen stängs automatiskt inom en angiven tid.
Anteckning
Den här lösningen använder inte funktionen MsgBox för att varna användaren. Funktionen MsgBox väntar på indata innan kod körs. Det här skulle förlora syftet med lösningen.
Om du vill stänga klientsessioner på ett smidigt sätt byter den här lösningen namn på filen som kontrolleras. När allt som måste göras är klart byter den här lösningen namn på filen tillbaka till det ursprungliga namnet. Då vet användarna att de kan starta frontend-databasen igen.
Den här processen kan också automatiseras för att tillhandahålla obevakad åtgärd genom att använda en schemalagd tjänst på servern som byter namn på chkfile.ozx vid angivna tidpunkter.
Steg för att skapa ett exempelscenario
För att kunna visa hur den här lösningen fungerar måste du ha följande:
- En mapp på hårddisken med sökvägen C:\MyData.
- En tom fil. Den här lösningen söker efter förekomsten av den här filen.
- En uppdelad databasdesign med tabellerna i en backend-databasfil och länkar till den tabellen i frontend-databasen. Frontend-databasen innehåller den kod som kontrollerar att filen finns med ett an angett intervall, och sedan varnas användaren.
Skapa mappen för exempelprogrammet
Skapa en mapp i rotkatalogen på enhet C och ge den namnet Minadata.
Skapa den tomma textfilen
- Skapa en ny textfil i mappen Minadata och ge den ett chkfile.txt.
- Byt namn på textfilen så att den har filnamnstillägget ozx (chkfile.ozx). När du uppmanas att göra det bekräftar du att du vill ändra filnamnstillägget.
Skapa backend-databasen
- Skapa en ny databas i mappen C:\MyData och ge den namnet Northwind_Be.mdb.
- Importera tabellen Kunder från Northwind-exempeldatabasen till Northwind_Be.mdb-databasen. (Som standard finns Northwind i C:\Program\Microsoft Office\Office10\Samples.)
- Stäng databasen.
Skapa frontend-databasen
- Skapa en ny databas och ge den namnet Northwind_Fe.mdb.
- Länka tabellen Kunder från databasen Northwind_Be.mdb till den nya databasen Northwind_Fe.mdb
- Skapa ett autoformulär baserat på den länkade tabellen Kunder och spara det som frmCustomers. Stäng det här formuläret.
Skapa formuläret med kod som kontrollerar att filen finns
- Skapa ett obundet formulär och spara det med namnet frmAppShutDown. I en produktionsdatabas är det här formuläret vanligtvis öppet men inte synligt. För det här exemplet kan det lämnas öppet som vanligt.
- Ange egenskapen TimerInterval för formuläret till 6 0000 millisekunder. Det här är lika med en minut. (För din egen lösning kan du öka eller inaktivera det här tidsintervallet.)
- I Microsoft Office Access 2003 eller i tidigare versioner av Access klickar du på Kod på Visa-menyn i designvyn för formuläret frmAppShutDown. I Microsoft Office Access 2007, i designvyn för frmAppShutDown-formuläret, klickar du på fliken Design och sedan på Visa kod i gruppen Verktyg. Skriv eller klistra in följande kod:
Option Explicit
Dim boolCountDown As Boolean
Dim intCountDownMinutes As Integer
Private Sub Form_Open(Cancel As Integer)
' Set Count Down variable to false
' on the initial opening of the form.
boolCountDown = False
End Sub
Private Sub Form_Timer()
On Error GoTo Err_Form_Timer
Dim strFileName As String
strFileName = Dir("c:\MyData\chkfile.ozx")
If boolCountDown = False Then
' Do nothing unless the check file is missing.
If strFileName <> "chkfile.ozx" Then
' The check file is not found so
' set the count down variable to true and
' number of minutes until this session
' of Access will be shut down.
boolCountDown = True
intCountDownMinutes = 2
End If
Else
' Count down variable is true so warn
' the user that the application will be shut down
' in X number of minutes. The number of minutes
' will be 1 less than the initial value of the
' intCountDownMinutes variable because the form timer
' event is set to fire every 60 seconds
intCountDownMinutes = intCountDownMinutes - 1
DoCmd.OpenForm "frmAppShutDownWarn"
Forms!frmAppShutDownWarn!txtWarning = "This application will be shut down in approximately " & intCountDownMinutes & " minute(s). Please save all work."
If intCountDownMinutes < 1 Then
' Shut down Access if the countdown is zero,
' saving all work by default.
Application.Quit acQuitSaveAll
End If
End If
Exit_Form_Timer:
Exit Sub
Err_Form_Timer:
Resume Next
End Sub
- Spara och stäng formuläret.
Skapa formuläret som ska användas för att varna användaren
Anteckning
Använd inte funktionen MsgBox för att varna användaren. Funktionen MsgBox väntar på indata innan kod körs. Det här skulle förlora syftet med lösningen.
Skapa ett obundet formulär och ge det namnet frmAppShutDownWarn. Lägg till följande textr rutaskontroll:
Name: txtWarning Type: TextboxSpara och stäng formuläret.
Skapa ett makro som öppnar formuläret frmCustomer och formuläret frmAppShutDown vid start. Namnge makrot autoexec.
Stäng och öppna databasen igen.
Byt namn på chkfile.ozx till chkfile.old.
Tidsinställningar för lösningshändelser
Anteckning
Alla följande tider är ungefärliga och börjar efter ändring av chkfile.ozx.
- En minut eller mindre: Northwind_FE.mdb märker att den fil som kontrolleras saknas.
- Två minuter: Ett formulär öppnas i Northwind_FE.mdb, med ett meddelande om att databasen stängs om en minut.
- Tre minuter: Northwind_FE.mdb stängs automatiskt och allt arbete sparas.