Supportnet / Forum / Datenbanken
Fehler beim Autowert ermitteln
Frage
Hallo Leute,
greife über 2 PC´s (gleiche Access-Anwendung), die im gleichen Netz liegen, auf eine Datenbanktabelle (Access-Datenbank) zu, die ein Feld mit Autowert hat. Bekomme aber von beiden Anwendungen nicht die fortlaufenden Nummern geliefert. Nur wenn ich von einer Anwendung aus auf die Datenbank zugreife bekomme ich die richtigen fortlaufenden Nummern geliefert. Sobald die 2. Anwendung auf die Tabelle zugreift bekomme ich nicht mehr die fortlaufenden, sondern die 2. Anwendung beginnt dann z.B. bei 20 mit den fortlaufenden Nummern. Gibt es eine Möglichkeit das abzustellen, so dass beide Anwendungen mit den Autowert fortlaufend bekommen?
Bitte helft mir.
Ciao Roman
Antwort 1 von mapet
Hallo
Ich verstehen nicht ganz was Du damit meinst die zweite Anwendung beginnt mit 20.
Wenn Du einen neuen DS eingibst oder wenn Du die Daten in der Tabelle anschaust (unterschiedliche Sortierung in Forms oder Abfragen?)
mapet
Ich verstehen nicht ganz was Du damit meinst die zweite Anwendung beginnt mit 20.
Wenn Du einen neuen DS eingibst oder wenn Du die Daten in der Tabelle anschaust (unterschiedliche Sortierung in Forms oder Abfragen?)
mapet
Antwort 2 von Angel
Hallo mapet,
wenn ich mit der 2. Anwendung einen neuen DS erstelle wird er nicht mit der nächsten Nummer in der Datenbank erstellt sondern jede Anwendung zählt seine eigenen fortlaufenden Nummern hoch! Beide Anwendungen (Access MDE-Dateien) sind mit der Access Datenbank verknüpft, müssten eigentlich ja fortlaufend vergeben werden. Tun sie aber nicht.
Ciao Roman
wenn ich mit der 2. Anwendung einen neuen DS erstelle wird er nicht mit der nächsten Nummer in der Datenbank erstellt sondern jede Anwendung zählt seine eigenen fortlaufenden Nummern hoch! Beide Anwendungen (Access MDE-Dateien) sind mit der Access Datenbank verknüpft, müssten eigentlich ja fortlaufend vergeben werden. Tun sie aber nicht.
Ciao Roman
Antwort 3 von mapet
Hallo Roman
Wenn Du die DS vergleichst also Anwendung eins DS erstellen HauptID z.B. 15 wird dieser in der 2.DB korrekt ausgegeben und werden sicher keine ID doppelt vergeben?
mapet
Wenn Du die DS vergleichst also Anwendung eins DS erstellen HauptID z.B. 15 wird dieser in der 2.DB korrekt ausgegeben und werden sicher keine ID doppelt vergeben?
mapet
Antwort 4 von Angel
verstehe ich nicht :-)
- Habe 2 Anwendungen die mit einer Datenbank verknüpft sind.
- Die Tabelle mit dem Autowert wird am Monatsende aus der DB gelöscht und neu erstellt, so dass die Nummern im neuen Monat wieder mit 1 beginnen.
- Lösche ich nun die Tabelle in der Datenbank von meiner 1. Anwendung aus und erstelle sie Neu, so werden die Nummern über die 1. Anwendung richtig vergeben (Sie beginnen dann wieder mit 1). Will ich dann DS aus der 2. Anwendung aus erstelle, so zählt diese dann einfach weiter bei 289!(alter Monat endete bei 288) Obwohl beide Anwendungen ja mit derselben DB (Tabelle) verknüpft sind.
Hoffe du kannst mir helfen und ich habe dir das Problem jetzt besser erklärt :-)
Ciao Roman
- Habe 2 Anwendungen die mit einer Datenbank verknüpft sind.
- Die Tabelle mit dem Autowert wird am Monatsende aus der DB gelöscht und neu erstellt, so dass die Nummern im neuen Monat wieder mit 1 beginnen.
- Lösche ich nun die Tabelle in der Datenbank von meiner 1. Anwendung aus und erstelle sie Neu, so werden die Nummern über die 1. Anwendung richtig vergeben (Sie beginnen dann wieder mit 1). Will ich dann DS aus der 2. Anwendung aus erstelle, so zählt diese dann einfach weiter bei 289!(alter Monat endete bei 288) Obwohl beide Anwendungen ja mit derselben DB (Tabelle) verknüpft sind.
Hoffe du kannst mir helfen und ich habe dir das Problem jetzt besser erklärt :-)
Ciao Roman
Antwort 5 von mapet
Hallo
Das Problem ist mir jetzt klar, eine Lösung habe ich nicht aber ich vermute dass wenn Du die Tabelle aus der zweiten Anwendung löscht die erste weiterzählt. Dies wiederum würde bedeuten, dass die .mde den letzten Wert irgoendwo noch gespeichert hat und damit fortfährt wenn er nicht belegt ist?
Dies könntest Du eventuell umgehen wenn die Tabelle nicht gelöscht wird sondern nur die DS (fängt dann nicht mehr bei null an)
mapet
Das Problem ist mir jetzt klar, eine Lösung habe ich nicht aber ich vermute dass wenn Du die Tabelle aus der zweiten Anwendung löscht die erste weiterzählt. Dies wiederum würde bedeuten, dass die .mde den letzten Wert irgoendwo noch gespeichert hat und damit fortfährt wenn er nicht belegt ist?
Dies könntest Du eventuell umgehen wenn die Tabelle nicht gelöscht wird sondern nur die DS (fängt dann nicht mehr bei null an)
mapet
Antwort 6 von Angel
Vielen Dank aber die Tabelle muss am Monatsanfang wieder mit 1 beginnen, vielleicht hat ja noch ein anderer User eine Lösung auf Lager.
Werde nicht aufgeben. Ciao Roman
Werde nicht aufgeben. Ciao Roman
Antwort 7 von TheRealWhistler
Hi,
hier liegt ein Synchronisationsfehler vor. Normalerweise wird die Synchronisation automatisch von der Datenbank erledigt, egal wieviele Clients gerade mit der Datenbank verbunden sind, und mit dieser kommunizieren. Möglicherweise musst du die Access-Datenbank entsprechend konfigurieren, dass sie auch mit mehreren Clienten einwandfrei funktioniert (habe aber keine Ahnung wie). Bei Oracle beispielsweise reicht es aus einfach eine 2. Verbindung zur Datenbank einzugehen, um die Synchronisation der beiden echt-parallelen Verbindungen musst du dich nicht kümmern (automatischer wechselseitiger Ausschluss beim Zugriff auf die DB).
Bin mir nicht sicher ob das beim Access genaus so ist, aber versuche es mal mit "Auto Commit" auf true setzen. Auto Commit bewirkt, dass jedes SQL-Statement sofort von der Datenbank ausgeführt wird, es werden nicht erst mehrere gruppiert und dann als block ausgeführt. Auto Commit garantiert zwar keine atomaren (unteilbaren) SQL-Statements, es wäre aber ein Versuch wert.
hier liegt ein Synchronisationsfehler vor. Normalerweise wird die Synchronisation automatisch von der Datenbank erledigt, egal wieviele Clients gerade mit der Datenbank verbunden sind, und mit dieser kommunizieren. Möglicherweise musst du die Access-Datenbank entsprechend konfigurieren, dass sie auch mit mehreren Clienten einwandfrei funktioniert (habe aber keine Ahnung wie). Bei Oracle beispielsweise reicht es aus einfach eine 2. Verbindung zur Datenbank einzugehen, um die Synchronisation der beiden echt-parallelen Verbindungen musst du dich nicht kümmern (automatischer wechselseitiger Ausschluss beim Zugriff auf die DB).
Bin mir nicht sicher ob das beim Access genaus so ist, aber versuche es mal mit "Auto Commit" auf true setzen. Auto Commit bewirkt, dass jedes SQL-Statement sofort von der Datenbank ausgeführt wird, es werden nicht erst mehrere gruppiert und dann als block ausgeführt. Auto Commit garantiert zwar keine atomaren (unteilbaren) SQL-Statements, es wäre aber ein Versuch wert.
Antwort 8 von TheRealWhistler
PS: Du verwendest sicherlich Access-Formulare um Datensätze bearbeiten zu können. Mann kann mit dem Access Assitenten synchronisierte Formulare erstellen.
Antwort 9 von Angel
Hi,
Ja ist richtig, ich verwende Access Formulare um auf die Datenbank zuzugreifen. Aber ein leeres Formular und erst beim speichern wird eine Anfügeabfrage mit Bildung des Autowertes erzeugt. Auto Commit habe ich in Access nicht gefunden.
Ciao Roman
Ja ist richtig, ich verwende Access Formulare um auf die Datenbank zuzugreifen. Aber ein leeres Formular und erst beim speichern wird eine Anfügeabfrage mit Bildung des Autowertes erzeugt. Auto Commit habe ich in Access nicht gefunden.
Ciao Roman