Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Fehler 3022, Error DB Access 2010 Unklarheit

Begonnen von Fizzo361, Juli 28, 2014, 11:51:55

⏪ vorheriges - nächstes ⏩

Fizzo361

Ein Wunderschön liebes Forum,
ich habe aktuell ein Problem in meiner Datenbank, diese Funktion ging eigentlich immer einwandfrei, doch seit 1-2 Tagen spinnt Sie rum...
Mein Problem:
Ich hab ein Formular in dem ich Daten(Mitarbeiter,Schulung,schulen-bis, ist&soll-Status) eintrage anschließend werden diese mittel DirtyCheck geprüft.
Private Function dirtyCheck() As Boolean
     If Not IsNull(Me.cbo_schulung) And Not _
       IsNull(Me.cbo_mitarbeiter) And Not _
       IsNull(Me.txt_planungsdatum) And Not _
       IsNull(Me.cbo_ist) And Not _
       IsNull(Me.cbo_soll) Then
        If Me.Dirty Then Me.Dirty = False
        dirtyCheck = True
    Else
        dirtyCheck = False
    End If
End Function

dann erscheint bei folgender Prozedur die Meldung 3022 Änderung an der gewünschten TBL kann nicht...
Private Sub btn_Checkliste_Click()
    On Error GoTo Err_btn_checkliste_Click
    If dirtyCheck Then
        subCheckTrainer 1
    Else
        MsgBox "Daten nicht vollständig!"
    End If
Exit_btn_checkliste_click:
    Exit Sub
Err_btn_checkliste_Click:
    MsgBox Err.Number & " " & Err.Description
    Resume Exit_btn_checkliste_click
End Sub

    MsgBox Err.Number & " " & Err.Description hier springt er dann immer hin... ich kann mir nicht erklären warum aufeinmal keine Doppelten Einträge möglich sein sollen, hoffe ich könnt mir irgendwelche Tipps oder Anregungen geben.

Warum und wie kann ich prüfen ob Daten Doppelt angelegt werden können?

Bis dahin viel erfolg und vielen dank
Fizzo361

MaggieMay

Hallo,

die Antwort auf deine Frage dürfte in der Tabellendefinition zu finden sein.
Freundliche Grüße
MaggieMay

Fizzo361

Vielen Dank MaggieMay ;)
Folgendes:
habe das gleiche FE auf unterschiedliche BE verlinkt und in BE1 war die TBL_conn_mitarbeiter_schulung noch voll und ich könnte keine Datensätze mehr anlegen.
Bei dem BE2 wo ich die tbl_conn... kompellt geleert habe kann ich nun mit dem selben FE beliebig oft und viele DS erzeugen und anlegen.

In den Tabellendefis hab ich keinerlei unterschied feststellen können

hast du evtl dafür eine Erklärung?

MaggieMay

Zitat von: Fehler 3022Die von Ihnen vorgenommenen Änderungen an der Tabelle konnten nicht vorgenommen werden, da der Index, Primärschlüssel oder die Beziehung mehrfach vorkommende Werte enthalten würde. Ändern Sie die Daten in den Feldern, die gleiche Daten enthalten, entfernen Sie den Index, oder definieren Sie den Index neu, damit doppelte Einträge möglich sind, und versuchen Sie es erneut.
Ich halte die Fehlermeldung für deutlich genug und glaube weiterhin, dass die Erklärung in den Tabellendefinitionen und/oder Beziehungen im Backend zu finden sein dürfte.
Freundliche Grüße
MaggieMay

Fizzo361

Hey danke dir für deine Unterstüzung,

also ich hab jetzt nochmal genau im Backend bei der tbl_conn_mitarbeiter_schulung nach der Defi geschaut,
ich hab alle Felder als "Nicht Indiziert" angegeben, bis auf das Feld nr das hat einen AutoWert und ist mit "Ja (Ohne Duplikate)" eingestellt.

Also hat jetzt Access ein Problem mit der Fortlaufendenen Nummer?
Weil dort hab ich datensätze wo in der LFDNR lücken duch löschungen vorkommen.
und alle anderen Daten wie Mitarbeiter und Schulung dürfen alle mehrfach in der Tabelle vorkommen nur die LFDNR muss eindeutig bleiben. 

Weiß jetzt leider nicht weiter...
im anhang hab ich mal ein screen von der defi erstellt also alle unteren felder haben die gleichen einstellungen wie auf dem Bild zusehen ist nur
der AutoWert ist mit "Ja (Ohne Duplikate)" eingestellt.

MaggieMay

Es wäre möglich, dass die Tabelle "defekt" ist, d.h. dass es tatsächlich nur am Autowert liegt und Access versucht, bereits bestehende Schlüssel einzufügen. Reparieren und Komprimieren hilft hier in der Regel nicht, sondern die Tabelle muss neu erstellt und die alten Datensätze per Anfügeabfrage übernommen werden - inkl. Autowert, sofern dieser für Beziehungen zu anderen Tabellen benötigt wird.
Freundliche Grüße
MaggieMay

DF6GL

Hallo,

falls tatsächlich ein interner Fehler am Autowert vorliegt, könnte auch ein Import aller Tabellen und sonstiger Objekte in eine neue leere DB helfen...
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Fizzo361

Hallo und vielen Dank für eure Antworten (Y), ich hoffe und vermute auch das es an dem AutoWert liegt.

Allerdings hab ich jetzt ein kleines Problemchen, ich weiß nicht genau wie ich alles in eine neue Datenbank Importiere, also ich weiß nicht genau wie ich das mit dem Frontend & dem Backend machen soll.

Erstmal alles Tabellen aus dem BE und alle Berichte,Forms etc aus dem Fe in eine gemeinsame neue DB importieren und dann anschließend wieder in Backend & Frontend aufteilen?
Sorry für die etwas lächerliche frage aber ich habs noch nie gemacht  ;D

Könnt ihr da nochmal so nett sein und mir eine kleine Hilfestellung geben ob ich mit meinem "plan" auf dem richtigen weg bin ?

Vielen dank euch und ich wünsche euch noch ein super Tag
Grüße
Fizzo361

MaggieMay

Hi,

wenn es ein Problem mit der Tabelle gibt, so hat das Frontend damit nichts zu tun und die Reparatur sollte direkt auf dem Backend stattfinden.

Ich würde allerdings die Tabelle neu erstellen, von einem Import würde ich mir keine Reparatur erhoffen, aber du kannst es ja mal ausprobieren.

Ansonsten:
- Backend umbenennen
- neue DB mit dem Namen des alten BE anlegen
- alle Tabellen importieren (inkl. Beziehungen, wenn möglich)
Freundliche Grüße
MaggieMay

Fizzo361

Huhu,
Danke Danke Danke  ;)

habs wie im Post zuvor Realisert bekommen und die Datenbank läuft jetzt wieder 1A.

Vielen dank für eure Hilfe, habt mir super geholfen danke

Nur noch eine frage zu dem Fehler kann man sich das so in etwa vorstellen wie bei "C"-Programmierung wenn man bei Strukts den Zeiger auf ein Element verliert.
Oder warum gab es probleme im dem AutoWert?

MaggieMay

Wie es konkret dazu kommt, kann ich nicht beantworten, den genauen Zeitpunkt bekommt man ja kaum mit, die Auswirkungen bemerkt man vermutlich erst später.

Ich wüsste aber noch gern, was genau dir geholfen hat. Wird der Fehler tatsächlich durchs Importieren behoben?
Freundliche Grüße
MaggieMay

Fizzo361

Ahh okay verständlich, das erklärt zumindest schon mal das Verhalten des Fehlers.

Ahhm ja also ich habe einfach eine neue DB erstellt dann alle Tabellen vom Backend Importiert, dann noch den rest ausm FE wie Berichte, Forms und Co. anschließend habe ich die DB neu geteilet in BE & FE, nachdem ich dann die Startoption und die Verknüpfung zueinander erstellt habe, leift die Datenbank wieder einwandfrei und ich kann nun wieder beliebig viele Datensatz anlegen.

Also ja das Importieren hat den Fehler behoben.
Und MaggieMay dir wollte ich auch nochmal persönlich danken, warst eine super Unterstüzung - Danke (Y)

So wenn es jetzt nicht noch mehr fragenu nd unklarheiten gibt würde ich mal sagen der Thread ist geschlossen :D

MaggieMay

Zitatdann noch den rest ausm FE wie Berichte, Forms und Co. anschließend habe ich die DB neu geteilet in BE & FE
Was hast du dir denn eigentlich dabei gedacht?! Ich sagte doch, dass die Fehlerbereinigung ausschließlich das Backend betrifft. Und wenn du die neue Backend-DB unter dem alten Namen an den alten Speicherort legst, merkt das Frontend gar nichts von der Aktualisierung.
Freundliche Grüße
MaggieMay

Fizzo361

Ahhm ja klar hätte ich das auch so machen können aber, so konnte ich wenigsten auch mal den Assisten für Datenteilung ausprobieren, hab halt einfach etwas rumgespielt und naja es hat geklappt :D