Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Access 2003 - Benutzer im Netzwerk zwangsweise trennen

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

⏪ vorheriges - nächstes ⏩

Greco1308

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

oma

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
nichts ist fertig!

Shai

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

zu viele Leute denken in Excel.

oma

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
nichts ist fertig!

Hondo

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

Greco1308

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

oma

Hallo,

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

Gruß Oma
nichts ist fertig!

Greco1308

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

Hondo

Hallo,
Popup ist ein Formular mit Popupeigenschaft auf ja gestellt.

Andreas

Greco1308

Danke,

das war ja fast schon zu einfach.

Aber man nimmt ja gerne jede Hilfe an.

Gruß

Stephan

Greco1308

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

Greco1308

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

Greco1308

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

NoFear23m

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

Diese Ausstrahlung! Dieses Lächeln! Diese Intelligenz!
Diese Wunderschönen Augen! Aber genug von mir. Wie geht's Dir?

Greco1308

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