PDA

Vollständige Version anzeigen : Mehrere Benutzer


Bunny
19.09.2001, 11:35
Hallihallo,
mein Problem ist, daß ich eine supertolle DB vollbracht habe und damit jetzt mehrere Leute arbeiten sollen. Nun habe ich sie also auf den allgemeinen Server-Pfad gestellt. Alle können sie auch öffnen und darin arbeiten, aber wenn sie sie schließen wollen, kommt die Meldung "Speichern nicht möglich; momentane Sperrung durch Benutzer 'admin' auf Computer..."
Das ist natürlich blöde! Weiß einer von Euch Hilfe? Bitte in simpler Sprache antworten, da ich Neuling in access bin :-)

Danke

HPG
19.09.2001, 14:50
Hallo Bunny,

wenn du die DB auf den Server gepackt hast, liegt sie in einem speziellen Ordner.
Haben alle Benutzer dort SCHREIBRECHTE in diesem Verzeichnis ?

Wird die DB "EXCLUSIV" geöffnet ?

Hans-Peter

Kigo
19.09.2001, 15:05
Hi Bunny,

wie sieht es denn mit der Datenbanksperrung in deinen Formaularen aus? Du solltest dort Bearbeiteter DS einstellen!

Kigo

Bunny
19.09.2001, 15:18
Wo finde ich denn das, wo ich das einstellen kann?

HPG
19.09.2001, 15:29
Im Formularentwurf

Formular -> Eigenschaften -> Datensätze sperren: Bearbeiteter Datensatz

Hans-Peter

toja
19.09.2001, 16:03
Hi Bunny,
am besten Du legst eine Verknüpfung auf Deine Tabellen an, hab ich mir mal sagen lassen. Wenn Du willst, frag ich bei Kollege nach u ich schreib's Dir dann nochmal genauer, ok?

VG toja

Bunny
19.09.2001, 16:18
Das wäre super! Die Angelegenheit stellt sich nämlich als sehr hinderlich für alle, die daran arbeiten heraus!

Danke schon jetzt!

Bunny
20.09.2001, 09:18
Hallo HPG,
ich habe nachgesehen: Bei den Formulareigenschaften steht bei "Datensätze sperren" -> keine Sperrungen.
Genau das will ich ja oder kann genau das den Fehler verursachen?

toja
20.09.2001, 09:45
Hallo Hasi!
Sorry, daß ich mich so spät melde...

Also, Du kopierst Deine (tolle) DB und packst diese Kopie in ein Verzeichnis auf den Server.
Dann öffnest Du Deine lokale DB auf Deinen Arbeitsplatz(-Rechner).Danach: Datei -> Externe Daten -> Tabellen verknüpfen: Du wählst die DB die Du gerade auf den Server kopiert hast...und auf ok klicken. Danach kannst Du die Tabellen auswählen, die Du verknüpfen willst. Wenn Du z.B. die Tabelle ‚Tab’ auswählst und auf ok klickst, dann wird anschließend die Verknüpfung erstellt. Die verknüpfte Tabelle heißt nun ‚Tab1’ und ist mit einem Pfeil gekennzeichnet (Du bist immer noch in Deiner lokalen DB, nicht die Server-DB). Nun löscht Du die Tabelle ‚Tab’ und nennst Deine verknüpfte Tabelle ‚Tab1’ in ‚Tab’ um. Das wiederholst Du an allen Arbeitsplatzrechnern.
Nun hast Du erreicht, dass alle lokal arbeiten können, dass Änderungen aber immer zentral gespeichert werden. Toll, oder?
Ich hoffe meine Erklärung war verständlich; wenn nicht schnell mailen. Übrigens: ich empfehle Dir vorher eine Sicherheitskopie anzulegen, denn man man weiß ja nie. Und wenn Du Tabellen löschst, dann ist es wohl schjön ,wenn man im Notfall noch einen Trumpf im Ärmel hat.
Schreib doch bitte, wenn’s geklappt hat

Hth toja

Bunny
20.09.2001, 10:34
Vielen Dank erstmal! :-)
Da ich das auf allen Rechnern, die mitarbeiten machen muß, klingt das nach einer längeren Aktion. Ich werde versuchen, es noch in meinem heutigen Tagesablauf unterzukriegen. Melde mich, wenn sich was getan hat.

Bunny
20.09.2001, 11:24
Hallo toja,
also erstmal: ich habe es nach Deiner Erklärung gut hingekriegt. Funktioniert auch. Allerdings: wenn ich jetzt von meinem Rechner aus auf die Server-DB zugreife, sind dort die letzten Änderungen (sprich: neue Datensätze) für mich nicht drin. An den anderen Rechner sind sie das aber. Heißt das vielleicht, ich muß auf meinem Rechner immer auf die sozusagen zentrale DB zugreifen?

toja
20.09.2001, 11:52
Hallo Bunny,
hmm, ich denk mal drüber nach...
ad hoc würde ich sagen: wenn das bei den anderen Rechnern klappt, nur bei Deinem nicht, es aber so klappen soll, wie bei den anderen Rechnern, dann verknüpfe die Tabellen auf Deinen Rechner genauso, wie bei den anderen...ist ja auch irgendwie logisch, daß aktuelle Änderungen, die von allen anderen auf der Server-DB gemacht werden, auch nur dort stehen, oder? Ist das denn ein Problem für Dich, Deinen Rechner auch noch an die ServerDB zu koppeln?
Hilft das? Ober hab ich Dich da falsch verstanden? Falls das nicht hilft, frag noch mal nach. Ich bin aber morgen nicht da, aber heute schaue ich ganz sicher noch mal nach, was Du geantwortet hast, ok?

hth u vg toja

Bunny
20.09.2001, 12:07
Alles Scheiße!
Funktioniert nicht. Erst ging´s, da hatte ich die Haupt-DB auf C:, also mein lokaler Rechner. Da aber möglichst alles auf dem gleichen Pfand sein soll, habe ich diese nun auch auf den Server-Pfand geschoben. Und nun besteht das gleiche Problem wie vorher.
HILFE!

Anne Berg
20.09.2001, 12:14
Hallo Bunny!

Du mußt die Datenbank trennen: in FRONTEND (=Formulare, Module, etc.) und BACKEND (nur allgemein zugreifbare Tabellen).
Die Tabellen-DB liegt dann für alle auf dem Server, das Frontend wird lokal installiert. Dann macht die Tabelleneinbindung Sinn.
Du kannst dir dann zum Testen eigene Tabellen einbinden (muß also variabel gehalten werden).

So sollte es dann gehen!

holgii
20.09.2001, 12:32
Hallo Bunny,

ich hab mal 'ne Anwendung "geerbt", wo es keine Trennung in Front-End/Back-End gab
und das gleiche, von Dir geschilderte Phänomen...

Es gab in meinem Fall zwei Möglichkeiten, wie sich die Anwendung schließen ließ:

1. In die Formularentwurf-Ansicht wechseln, Schließen-Schaltfläche in Titel-Leiste drücken. (frag mich nich, WARUM das so ging... *habbichselbstnichrausgekriegt*)

2. ...und auch die bessere Lösung meines Problems war dann, im Formular eine Befehls-Schaltfläche mit der Funktion "Formular verlassen" einzubauen, mit hinterlegtem Code, wo sinngemäß drinstand: CloseForm savechanges=no


Hoffe es hilft auch in Deinem Fall...

Viele Grüße

holgii

Bunny
20.09.2001, 12:57
Also, ich verstehe ganz grundsätzlich nicht, wieso das so kompliziert ist. Warum kann ich die DB nicht einfach auf den für alle zugänglichen Serverpfad kopieren und fertig....
Bin ich zu blöde?

holgii
20.09.2001, 13:30
Hallo Bunny,

Deine Anwendung liegt doch noch auf dem Server-Pfad ?

Mach doch mal folgenden Test:

Reproduziere die Fehlermeldung "Speichern nicht möglich; momentane Sperrung durch Benutzer ...".

Wenn diese Meldung kommt, schalte mal in den Formular-Entwurf um.

Anschliessend schliesst Du das Formular.

Wenn Access Dich jetzt fragt, ob die Änderungen am Formular gespeichert werden sollen, dann handelt es sich um das selbe Problem, das ich in meiner DB-Anwendung hatte, nämlich dass Access (warum auch immer) der Meinung ist, jemand hätte Änderungen am Formular selbst vorgenommen.
Diese kann Access natürlich nicht speichern, weil einige dieses Formular noch geöffnet haben.

Also, wenn es so ist, bau in dem Formular ne Befehlsschaltfläche ein, für die Du folgenden Code hinterlegst:
(Eigenschaft: "Beim Klicken")


Private Sub BefehlschaltflächenName_click()
DoCmd.Close , , acSaveNo
End Sub


Access meint dann zwar immer noch, dass jemand den Formular-Entwurf geändert hat,
aber Du bestimmst so, dass diese Änderungen nicht gespeichert werden sollen.


Probier's halt einfach mal aus.

Gruß
holgii

P.S.: Meine DB liegt auf dem Server, ca. 10-15 Leute arbeiten damit und seitdem ich diese Änderung gemacht habe, höre ich in dieser Richtung keine Klagen mehr.

toja
20.09.2001, 13:35
Hallo Bunny,
ich habe das genauso gemeint, wie Anne es noch mal erklärt hat...also bei uns hier funktioniert es so...versteh ich nicht.
Gruß toja

Kigo
20.09.2001, 13:52
Hi Bunny,

also ich wär da nicht so sicher, ob das nicht doch mit der DS-Sperrung zu tun hat. Ich hab auch eine DB auf dem Server, auf die meistens 3 Personen gleichzeitig zugreifen. Ich hab DS-Sperrung auf Bearbeiteter DS sperren. Klappt alles Prima. Wenn Du die Einstellung auf keine Sperrung stehen hast, greifen evtl. alle User auf die gleichen Tabellen zu und können nicht speichern, da die anderen auch drauf zugreifen. Es könnte dann also nur der speichern, der diese zuerst geöffnet hat. Ebenso wöre es wenn (wie HPG, sagt die DB exklusiv geöffnet hätte). Ich würds zumindest mal mit der DS-Sperrung: Bearbeiteter DS in allen Formularen ausprobieren.

Kigo

holgii
20.09.2001, 14:19
Hallo kigo,

Wenn Du die Einstellung auf keine Sperrung stehen hast, greifen evtl. alle User auf die gleichen Tabellen zu und können nicht speichern...

Warum verbietet Access das Speichern eines Datensatzes in der Mehrbenutzerumgebung, wenn keinerlei Datensatz-Sperre gesetzt ist ?

Kannst Du mir das bitte kurz erläutern ?


Gruß
holgii

Bunny
20.09.2001, 14:54
Verstehe ich ehrlich gesagt auch nicht bzw. so wie holgii.
zu holgii: Deine Variation funktioniert hier jetzt auch. Puh! Da bin ich jetzt aber froh!
Vielen Dank! Obwohl die Lösung wahrscheinlich programmiertechnisch nicht ganz astrein ist. Aber wenn access es so will, was?
Nochmal Danke, war eine schwere Geburt!

Kigo
20.09.2001, 15:08
Hi Leute,

na da bin ich aber froh, daß ich auch mal Helfen konnte. Schließlich habe ich durch diese wunderbare Forum mit all den Experten schon so viel gelernt.
Also wenn ihr mal nicht weiter wissen tut, fragt mich !!!!
Kleiner Scherz. Ich lerne ja auch nur by doing.
Und ehrlich gesagt ist die Frage durchaus berechtigt. Aber wahrscheinlich mal wieder Microsoft-Logik. Ich hab es auch nur aus eigener Erfahrung gemerkt. Wenn die Sperrung auf "Keine DS-Sperrung" steht greifen alle User auf die gleichen Tabellen zu. Ein DS der von einem User gerade benutz wird, kann aber nicht von einem anderen User geändert und gespeichert werden.
Aber vielleicht kann ja irgendein Guru mit Fachwissen aufwarten. Würd mich auch interessieren. Wobei in der OH wahrscheinlich auch einiges steht.

Kigo

Bunny
20.09.2001, 18:26
Nee, nee, Du, ich meinte die Variante von holgii, mit der Schaltfläche, die funktioniert. An der Einstellung DS gesperrt habe ich nicht geändert.