Kopieren Datensatz -> Tabelle danach defekt

13/07/2008 - 11:48 von Thilo Graf | Report spam
Hallo NG,
bei einer Vorgangsverwaltung in einem Multiuserumfeld (Front- und
Backend sind Access 2007 SP1) habe ich das Problem, dass (manchmal!)
nachdem man einen Vorgangsdatensatz kopiert hat eine Tabelle defekt
ist.

Szenario:
Access 2007 SP1
Es gibt eine Tabelle Vorgànge und eine Tabelle Vorgangspositionen.
Beide Tabellen habe je ein Autowert Primàrschlüssel.
Man kann einen kompletten Vorgang über einen Button kopieren, das ist
folgendermaßen umgesetzt:
1. Über CurrentDB.Execute "INSERT INTO tVorgaenge (..." wird der
Vorgang kopiert.
2. Über CurrentDB.Execute "INSERT INTO tVorgaengePositionen (..."
werden die Positionen kopiert und die Referenz auf die neue VorgangsID
gesetzt.

Irgendwann passiert es dann: das Autowert Feld von
tVorgaengePositionen setzt Werte ein, die bereits verwendet wurden und
es kommt Error 3022. Es passiert wenn dann immer nur in dieser
Tabelle. Das Kopieren des Vorgangs klappt in jedem Fall.
Durch /repair kann die Datenbank wieder funktionstüchtig gemacht
werden. Wenn man dann den Kopiervorgang wiederholt, klappt es.

bisher durchgeführte Gegenmaßnahmen:
1. Primàrschlüsselspalte in tVorgaengePositionen neu angelegt
2. Tabelle tVorgaengePositionen neu angelegt und Daten wieder
importiert
3. ganze Datenbank neu angelegt und Daten importiert

Trotzdem passiert es immer wieder. Die letzte Möglichkeit die ich noch
sehe ist das Backend-Datenbanksystem von Access auf MS SQL Express zu
migrieren.

Hat noch irgendjemand eine Idee woher dieses Verhalten kommen kann?

Viele Grüße
Thilo Graf
 

Lesen sie die antworten

#1 Gottfried Lesigang
14/07/2008 - 00:04 | Warnen spam
Hallo Thilo!

Beide Tabellen habe je ein Autowert Primàrschlüssel. [...]
1. Über CurrentDB.Execute "INSERT INTO tVorgaenge (..." [...]
Irgendwann passiert es dann: das Autowert Feld von
tVorgaengePositionen setzt Werte ein, die bereits verwendet wurden und
es kommt Error 3022.



Sehr eigenartig... Wo werden diese Werte denn "eingesetzt"?
Nur so eine Idee: Mit dem "INSERT INTO" kann man auch in Autowertfelder
beliebige (einzigartige) Werte eintragen. Damit hebelt man den
Autowert-Mechanismus aus (normalerweise "merkt" das Access und setzt mit
dem nàchst-höheren Wert fort). Ich hatte damit jedenfalls noch nie die
beschriebenen Probleme...

Es passiert wenn dann immer nur in dieser Tabelle.



Ich halte das auch deshalb eher nicht für einen Access-Fehler...

Das Kopieren des Vorgangs klappt in jedem Fall.



Wie jetzt? Die doppelten IDs kommen tatsàchlich in der Tabelle an?

bisher durchgeführte Gegenmaßnahmen:
[...]



Du vermutest den Fehler offenbar ausschließlich bei Access selbst. Alle
Reparaturmaßnahmen zielen auf die Beseitigung von strukturellen Fehlern.
Ich vermute die Ursache eher im Code...

Trotzdem passiert es immer wieder. Die letzte Möglichkeit die ich noch
sehe ist das Backend-Datenbanksystem von Access auf MS SQL Express zu
migrieren.



Wenn - wie ich das vermute - der Fehler in der Anwendung liegt, würde das
kaum helfen :-(

Hat noch irgendjemand eine Idee woher dieses Verhalten kommen kann?



Suche einmal in der ganzen Anwendung nach

INSERT INTO tVorgaengePositionen

und achte auf die Feldliste. Wird irgendwo die ID gesetzt?

HTH
Gottfried

Home: www.develes.net
Mail:

Ähnliche fragen