Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Greco1308 am März 20, 2008, 11:30:44

Titel: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: Greco1308 am März 20, 2008, 11:30:44
Hallo zusammen,

ich habe folgendes Problem:

Ich erstelle täglich für meine Mitarbeiter 6 verschiedene Datenbanken.

In diesen Datenbanken arbeiten insgesamt ca. 200 Mitarbeiter.

Leider haben wir eine ausgesprochen schlechte Netzwerkperformance, die sich in absehbarer Zeit auch nicht ändern wird.

Sobald eine der Datenbanken größer als ca. 10 MB wird lassen sich in der Datenbank keine Einträge mehr machen - Fehlermeldung Datenbank gesperrt.

Jetzt muss ich losziehen und alle Kollegen suchen, die gerade mit dieser Datenbank arbeiten (und die, die ich suche sind natürlich gerade nicht an ihrem Platz).

Wenn ich dann alle Kollegen gefunden habe und alle diese Datenbank verlassen haben dann kann ich diese als Admin aufrufen und neu Komprimieren und Reparieren.

Danach verringert sich die Dateigröße wieder auf ca. 2 MB und alle können wieder damit arbeiten.

Dieses Spielchen führe ich am Tag ca. 20 mal durch - und das nervt mich gewaltig.

Ich renne nur noch den Kollegen hinterher und suche Leute die noch in einer Datenbank drin sind.


So jetzt mal zu meiner Frage:

Gibt es in Access oder über ein Zusatz-Tool eine Möglichkeit alle Benutzer, die über ein Netzwerk auf eine Datenbank zugreifen zwangsweise zu trennen?


Danke schon mal für alle fleißigen Helfer

Gruß

Stephan
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: oma am März 20, 2008, 12:35:52
Hallo Stephan,

und warum lässt du die User die Komprimierung nicht selbst machen ? ?

Für das zwangsweise trennen gibt es verschiedene Ansätze im Netz. Eine brutale:

1. Du erstellt in deine DB ein (ausgeblendetes) Formular. Dort im Zeitgeberintervall: 60000 (entspricht 1 Minute)
2. Beim Zeitgeber folgenden Code:
     
    Dim Schluss As String
    Schluss= Dir("C:\BeliebigerPfad\Ende.xls", vbHidden)
    If Schluss <> "" Then
      Application.Quit
    End If
3. Mit Autoexec das Formular aufrufen. Es wird nun jede Minute geprüft, ob im angegeben Pfad eine Datei mit Namen Ende.xls liegt


Wenn du nun alle rausschmeissen willst, einfach solche Datei in den Pfad legen u. nach einer Minute sind alle raus (aber auch ohne Sicherung)

Und nicht vergessen. Danach Ende.xls wieder aus dem Pfad/Verzeichnis nehmen  ;D


Gruß Oma
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: Shai am März 20, 2008, 12:45:04
Hi!

Mit der obigen Lösung machst Du Dir aber keine Freunde, wenn jemand gerade dabei ist, einen Datensatz zu erfassen. Im Extremfall werden halbgare Daten abgespeichert.

Meine Empfehlung: Trenne Daten und Programm, Backend und Frontend. Das Frontend wird auf jeden Rechner draufkopiert und die Daten liegen zentral. Als zentralen Server eignet sich am besten ein Microsoft SQL Server ab Version 2000.
Und wenn Ihr Euch einen von Microsoft nicht leisten könnt, dann benutze den MySQL.

Gruß Shai

Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: oma am März 20, 2008, 13:09:58
Hallo

naja Backend und Frontend ist ja vorausgesetzt,

und bei der Lösung kannst Du ja noch ein PopUp-Formular einblenden:

Achtung ! Die Datenbank wird in X-Minuten beendet. Beenden Sie bitte alle Eingaben und Änderungen.

Gruß Oma
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: Hondo am März 20, 2008, 13:10:10
Hallo,
schwieriges Thema, welches am Besten mit einem SQL Server gelöst wird.
Eine Möglichkeit wäre wie die Lösung von oma, nur aber dass der Auslösende Zeitpunkt um z.B. 15 Minuten vorverlegt wird.
Und dann z.B. per Countdown dem User Signalisiert wird "in 10 Minuten wird ein Systemupdate ausgeführt, bitte schließen Sie alle offenen Anwendungen und beenden Sie die Datenbearbeitung rechtzeitig" oder irgend so ein Satz.
Dann 5 Minuten nochmals und 1 Minute dann immer nervender...
Eine Möglichkeit wäre dann per Netsend den User zu benachrichtigen wann er wieder die Anwendung starten kann.

Andreas
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: Greco1308 am März 20, 2008, 13:33:41
Hallo zusammen,

Danke für die schnelle Hilfe.

Ich kann davon nur den ersten Tip umsetzen, da wir keine Berechtigung haben SQL zu benutzen.

Also Frontend Backend fällt leider aus.

Da die Benutzer der Datenbanken eh nur Leserechte haben - ist das mit dem Datenverlust kein Problem.

Ich werde dann mal die Holzhammermethode von Oma ausprobieren.

Ich werde einfach bei uns über Outlook vorher eine entsprechende Mail verschicken, dass in x-Minuten die Datenbank neu komprimiert wird.

Danke schon mal für die Tipps.

Ich melde mich dann ob es funktioniert hat.

Gruß

Stephan
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: oma am März 20, 2008, 13:52:24
Hallo,

mach die Mitteilung doch auch über Access (PopUp-Formular vor dem Schlessen), falls die Mails gerade nicht gelesen werden  ;D

Gruß Oma
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: Greco1308 am März 21, 2008, 09:07:32
Das mit dem Pop-Up ist eine prima Idee.

Leider bin ich relativ neu mit Access unterwegs.

Hättest Du da eine genauere Anleitung für mich, wie ich das machen kann?

Danke schon mal

Gruß

Stephan
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: Hondo am März 21, 2008, 09:28:35
Hallo,
Popup ist ein Formular mit Popupeigenschaft auf ja gestellt.

Andreas
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: Greco1308 am März 21, 2008, 11:19:34
Danke,

das war ja fast schon zu einfach.

Aber man nimmt ja gerne jede Hilfe an.

Gruß

Stephan
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: Greco1308 am März 21, 2008, 11:46:05
Hallo Oma,

ich habe Deinen Vorschlag zu Zwangstrennung der Benutzer ausprobiert.

Leider schliesst diese Funktion immer nur die Datenbank, die auf meinem Rechner geöffnet ist.

Die Kollegen, die diese Datenbank auch geöffnet haben können diese alle weiter benutzen.

Hast Du eine Idee woran das liegen kann?

Gruß

Stephan
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: Greco1308 am März 21, 2008, 12:27:02
Das automatische Schiessen der Datenbank funktioniert jetzt.

Jetzt habe ich ein anderes Problem.

Da ich von VisualBasic keine Ahnung habe - hier meine Frage:

Wie muss ich folgenden Code abändern damit ich folgendes erreiche.

1. die Abfrage nach der Datei bleibt wie sie ist.
2. bevor die Datenbank geschlossen wird wird ein Popup-Formular aufgerufen mit dem Hinweis, dass die DB gleich geschlossen wird (Formular ist bereits fertig)
3. die Schliessung der Datenbank erfolgt dann erst 1 Minute nachdem das Popup angezeigt wurde

Danke schon mal

Gruß Stephan
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: Greco1308 am März 21, 2008, 12:28:19
Habe leider den Code vergessen

Hier ist er:

Private Sub Form_Timer()
Dim Schluss As String
    Schluss = Dir("T:\Share\Telefonliste\Backoffice\BackOffice SR-Team\automatische Schliessung Datenbanken - eingeschaltet\automische Schliessung - Produktwechsel.xls", vbHidden)
    If Schluss <> "" Then
      Application.Quit
    End If
End Sub
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: NoFear23m am März 21, 2008, 12:31:02
Wenn der Code auf deinem Rechner ausgeführt wird dann schliesst er ja auch DEINE Anwendung.

Habe sowas selber ncht nicht gemacht, aber rein von der Logik her muss der Code ja in der Applikation von den User ausgeführt werden dessen DB sich schliessen soll oder??

Grüße Sascha
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: Greco1308 am März 21, 2008, 12:32:39
Hallo NoFear23m,

die Schliessung funktioniert inzwischen auch auf mehreren Rechnern gleichzeitig.

ich habe jetzt nur noch das Problem mit dem Pop-Up Formular.

Aber Danke für Deine Hilfe

Gruß Stephan
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: oma am März 21, 2008, 13:07:22
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
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: Greco1308 am März 21, 2008, 13:58:15
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
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: Greco1308 am März 22, 2008, 12:57:24
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
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: oma am März 22, 2008, 13:43:47
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
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: Greco1308 am März 22, 2008, 14:31:39
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
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: oma am März 22, 2008, 15:14:28
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
 

Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: Greco1308 am März 22, 2008, 15:46:48
Danke für die Hilfe
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: Florian am März 25, 2008, 12:14:30
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
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: Greco1308 am Juli 03, 2008, 12:56:16
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
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: atropos am Juli 03, 2008, 14:38:45

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.
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: oma am Juli 03, 2008, 15:00:32
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
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: Greco1308 am Juli 03, 2008, 16:13:15
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
Titel: Re: Access 2003 - Benutzer im Netzwerk zwangsweise trennen
Beitrag von: Lordred am Juni 30, 2010, 08:48:50
Oma ist die Beste!!!  ;D