Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Access 2003 - Benutzer im Netzwerk zwangsweise trennen

Begonnen von Greco1308, März 20, 2008, 11:30:44

⏪ vorheriges - nächstes ⏩

oma

Hallo Stephan,

du hast völlig recht, das mit dem PopUp muss richtig gemacht werden u. ohne einen kleinen Trick gehts es mal wieder nicht.
Du erstellst zusätzlich ein kleines Warn PopUP-Formular mit einer bestimmten Warnnachricht.

Dann folgender Code:

Private Sub Form_Timer()
   Dim Schluss As String, Pause As Date
     
    Schluss = Dir("Pfad_auf_BackEndRechner\Ende.xls", vbHidden)
    If Schluss <> "" Then
         DoCmd.OpenForm FormName:="DeinWarnFormular"
       
         Pause = Timer
         Do While Timer < Pause + 60  ' Hier wird 60 Sekunden gewartet
           DoEvents
         Loop
       
         Application.Quit
     End If
End Sub


Mit dem Code wird nach dem Erscheinen des Warnformulars und vor den Abbruch eine Pause von 60 Sek. eingelegt.
Da DoEvents kannst du in dieser Zeit den gerade bearbeiteten Datensatz noch speichern u. danach ist eben Schluss !


Gruß Oma
nichts ist fertig!

Greco1308

Hallo Oma,

Access-Gott ist die richtige Bezeichnung.

Das ist genau das, was ich benötige.

Schönen Dank für die kompetente Hilfe.

Gruß Stephan

Greco1308

Die automatische Schliessung mit PopUp funktioniert inzwischen ganz prima.

Dabei ist jetzt leider folgendes Problem aufgetaucht.

Ich benutze diese Funktion wenn bei uns aufgrund der schwachen Netzwerkperformance keine Zugriffe auf die jeweilige Datenbank mehr möglich ist.

Das merken die Kollegen daran, dass sie in der Datenbank keine Einträge mehr machen können und folgende Fehlermeldung bekommen:

"Aktualisierung momentan nicht möglich"

Das ist ein PopUp-Fenster bei dem man dann OK anklickt.

Danach bleibt diese Datenbank ca. 5-10 Minuten für den jeweiligen Benutzer gesperrt (ich vermute das da Access alleine eine Art Bereinigung durchführt)

Wenn ich jetzt in diesem Zeitraum die Datenbank zwangsweise schliessen lasse, dann wird die Datenbank bei allen Anwender geschlossen - nur nicht bei dem bei dem die Datenbank gesperrt ist.

Gibt es einen Befehlt den ich in meinen Code einbauen kann, der ohne Ausnahme und auf jeden Fall die Schliessung von Access erzwingt?

Danke schon mal für die Hilfe

Gruß Stephan

oma

Hallo Stephan,

ich habe noch einmal deine Eingangsfrage gelesen:

Sobald eine der Datenbanken größer als ca. 10 MB wird lassen sich in der Datenbank keine Einträge mehr machen - Fehlermeldung Datenbank gesperrt.      das sollte eigentlich nicht passieren ? ? ;  ich habe schon mit weitaus größeren DB gearbeitet

In diesen Datenbanken arbeiten insgesamt ca. 200 Mitarbeiter.

das scheint mir eher der Knackpunkt zu sein, mit solch einer User-Anzahl habe ich mit Access kene Performance-Erfahrung

Auch: Aktualisierung momentan nicht möglich" ist mir noch nicht untergekommen.

Danach bleibt diese Datenbank ca. 5-10 Minuten für den jeweiligen Benutzer gesperrt (ich vermute das da Access alleine eine Art Bereinigung durchführt)  So etwa würde ich ausschließen, selbst das komprimieren u. reparieren sehr großer DB dauert max. nur einige Minuten.


Wahrscheinlich ist das Netz zusammen mit der hohen User-Anzahl schlicht so nicht zu gebrauchen und du musst dir etwas einfallen lassen. 

- Prüfe mal, ob die Eingabeformulare mit einer Abfrage versehen sind u. darin evt Felder nicht benötigt werden (zur Eingabe)
- Lässt sich evt die Back-End Datei teilen, sodass jeweils nur die Hälte der auf eine DB User zu greift u. die Netzbelastung geringer wird ?

So in dieser Richtung evt. noch ein paar Überlegungen anstellen. Wenn alles nichts bringt ist Access wohl nicht das richtige u. ein MS-SQL Einsatz ist unvermeidlich.


Gruß Oma
nichts ist fertig!

Greco1308

Hallo Oma,

aufgrund der großen Anwenderzahl teilen wir die Hauptdatenbank bereits in 6-8 Unter-Datenbanken.

Dadurch erreichen wir, dass wir pro Datenbank nur ca. 40-50 Benutzer haben.

Leider haben wir zu unseren Hauptservern (in Italien) nur eine 10 Mbit/s Anbindung.

Darüber läuft unser gesamtes Projekt (ca. 6000 Mitarbeiter) mit ca. 50 verschiedenen Haupt-Anwendungen.

Z.B. an Wochenenden, wenn nur deutlich weniger Mitarbeiter da sind - dann haben wir diese Probleme auch nicht.

Es ist mit Sicherheit ein Netzwerk-Problem.

Gibt es außer dem Quit-Befehl noch einen Befehl, der ohne Rücksichtnahme Access 100 %tig schließt?

Gruß Stephan

oma

Hallo Stephan,

das ist ein Netzwerkproblem, aber Access ist nun mal eine File-Server DB und arbeitet nicht nach einem Client-Server Prinzip wie MS SQL, bei denen dann das Netzwerk deutlich entlastet wird (im Prinzip)

Application.Quit   schliesst die DB ohne wenn und aber es sei denn, in einer DB ist die Option "beim Schließen komprimieren" gesetzt !

Gruß Oma
 

nichts ist fertig!

Greco1308


Florian

Hallo allerseits,

es geht auch noch krasser

mit diesem Befehl hier

sub myquit
dim app
app="cmd /k Taskkill /IM msaccess.exe /F"
shell app,vbhidden
end sub

Greco1308

Hallo zusammen,

die automatische Schliessung hat bisher ganz gut funktioniert.

Nun habe ich die Datenbank auf Front- und Backend umgestellt - das hat unseren Netzwerktraffic schon mal deutlich reduziert.

Leider funktioniert jetzt mein altes System mit der automatischen Schliessung nicht mehr.

Jetzt haben wir hier auch nur noch eine Backend-DB und eine Frontend-DB.

Nun möchte ich mir gerne im Backend einen Button einrichten der folgendes Makro ausführen soll.

- Zwangsweise Schliessung aller Frontend-DB unter Anzeige eines Warnhinweises (Formular - Schliesshinweis) und nach 1 Minute soll die Frontend-DB ohne weitere Nachfragen 100%tig geschlossen werden.

Danke schon mal

atropos


Hallo,

ich wüsste nicht, wie man vom BE aus die FE's schliessen kann.

Evtl. einen entsprechenden Wert als Trigger in eine Tabelle schreiben, der dann über einen Timer von den FE's ausgelesen werden kann. Das ist m.E. allerdings immer problematisch, wenn z.B. im FE gerade DS in Bearbeitung sind und nicht gespeichert werden können (weil z.B. Pflichtfelder nicht ausgefüllt sind).

Aber Du solltest Dich mal grundsätzlich  fragen, ob Deine Netzwerk-Konfiguration für 200 User so vorteilhaft ist. Da sollte ja schon fast eine professionelle Server Lösung her. Servertools bieten im allgemeinen Tools, mit denen Du die Anwendungen der User auf dem Server "normal" beenden kannst.
Gruss
atropos

oma

Hallo,

und warum funktioniert mein Beispiel vom 21. März zum Schliessen  der FE nicht ? ?

Wenn der angeführte Code in die FE eingesetzt wird , kannst du doch alle FE schließen ?


Gruß Oma
nichts ist fertig!

Greco1308

Der Code funktioniert prima.

Habe mich leider beim kopieren nur zu doof angestellt - man sollte schon alles kopieren.

Damit ist meine Anfrage dann auch schon beantwortet - funktioniert alles prima.

Es werden jetzt automatisch das Front- und Backend geschlossen - und dann kann ich das Backend komprimieren.

Trotzdem noch mal Dank an alle Helfer.

Gruß Stephan

Lordred