Access 2000 Datensatz Duplizieren

DERHAARKAMM

Mitglied
Hi @all,

ich habe beim Konvertieren einer Access 97 in eine Access 2000 Datenbank einen Fehler bekommen!

Ein altes Makro, welches einfach den bestehenden Datensatz im Formular kopiert und dann als neues wieder einfügt,
funktioniert nicht mehr. Ich glaube, dass es ein Problem mit dem Primärschlüssel beim einfügen gibt.

Die bisherige Befehlsreihenfolge lautete
Code:
AusführenBefehl "Datensatz Markieren"
AusführenBefehl "Kopieren"
GehezuDatensatz "Neuer"
AusführenBefehl "DatensatzMarkieren"
AusführenBefehl "Einfügen"

Gibt es eine einfache Lösung?
 
Uh..... Makros und das noch auf Deutsch.

Kontroliere mal obs alle Befehle in Access2000 noch gibt.
Und hast du wieder eine deutsche version von Access?

Ansonsten währe der Aufbau der Tabelle noch ganz praktisch. Ich kann dir nicht sagen obs Probleme mit einem Schlüssel gibt, wenn ich keine Fehlermeldung habe und nicht weiss wei die Tabelle und deren Indexe/Schlüssel aufgebaut ist.

PS:
Das Problem gehört wohl eher uner Affice-Anwendungen
http://www.tutorials.de/forum/office-anwendungen/
 
Es gibt die Befehle noch in Access 2000 und es handelt sich hierbei auch wieder um eine deutsche Version.

Ich bin mir jetzt defninitiv sicher, dass der Primary-key schuld ist, da ich vom Access
folgende Fehlermeldung bekomme:
"Alle Datensätze die von Access nicht eingefügt werden konnten, werden in die Tabelle Einfügefehler abgelegt!"

=> Mein Problem ist, dass beim einfügen eines Datensatzes der Primary-key nicht auf einen Autowert umgestellt wird,
sondern den alten kopierten einfügt.

Bei meinen Daten handelt es sich um Bodenproben und sie haben nur ProbenID als Primärschlüssel!

Gibt es eine einfache Lösung oder kennt wer einen einfachen VBA-Code inkl. Dokumentation für dieses Problem?
 
Mir is klar das der in der Tabelle defniert ist, aber beim einfügen sollte er dem kopierten Datensatz eine neue ProbenID zuweisen. Jedoch versucht das Access auch die ProbenID des kopierten Datensatzes einzufügen!
 
Moin DHK,

Ich bin mir jetzt defninitiv sicher, dass der Primary-key schuld ist, da ich vom Access
folgende Fehlermeldung bekomme:
"Alle Datensätze die von Access nicht eingefügt werden konnten, werden in die Tabelle Einfügefehler abgelegt!"
"ich bin mir jetzt definitiv sicher...." ist im normalen Leben keine Aussage, wegen der ich mich zu spontanem Aktionismus verleiten lasse...
Wenn denn dieser insgesamt EINE unvollendete Datensatz-Clone nun samt Fehlermeldung in der Einfügefehler-Tabelle steht.... könntest du mal bitte reinschauen?
Wir haben doch nix zu verlieren....

Wenn dagegen deine Vermutung stimmt, dass es am PK/AutoWert liegt...

....Dann kann dieses makro auch unter Access 97 niemals gelaufen sein.

Grüße
Biber
 
Hi Biber,

aber dann versteh ich nicht warum er den kopierten Datensatz nicht einfügt?
In der Tabelle mit den Einfügefehlern wird der Kopiertedatensatz 1:1 eingefügt=> auch die ProbenID
obwohl auf "Autowert" wird übernommen.
Unter Access 97 funktioniert die ganz gleiche Reihenfolge von Befehlen, aber sobald ich die DB
in eine Access 2000 DB konvertiere funktioniert sie nicht mehr!
Gibt es sicher keinen Unterschied bei den Access Versionen?
Was kann dann das Problem sein?

MFG DerHaarkamm
 
Zuletzt bearbeitet:
Moin DHK,

sagen wir so.... mit diesem AutoWert/AutoIncrement-Gelumpe arbeite ich weder unter Access noch in erwachsenen DBMSen ..

Aber WENN es unter Access97 diese COUNTER-Frelder schon gab (und da bin ich relativ sicher),
dann galt auch auch für diese "maximal ein AutoWert-Feld pro Tabelle, Jeder Autowert-Wert ist pro Tabelle unique".


Dein Makro...das unter Acc97 KANN also auch niemals funktioniert haben, denn wenn du beispielsweise Satz 37 von 100 (ja, den mit der ProbenID 37, genau) mit ALLEN Feldern kopierst/clonst als neuen 101sten Datensatz, dann würde der ja auch wieder den bereits vorhandenen Autowert 37 bekommen...
---> Widerspruch, kann nicht sein, kann auch nie so gewesen sein.

Es sei denn, im Formular ist das Feld "ProbenID" nicht sichtbar, nicht als Datenquelle angesprochen und das "AusführenBefehl kopieren" bezieht sich nur auf alle anderen Felder....

Grüße
Biber
 
Zuletzt bearbeitet:
Ich nutze folgende VBA-Befehlsfolge zum duplizieren. Diese wurde vom VBA-Assistenten erstellt:

DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 2, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 5, , acMenuVer70

Nur mal zum testen kannst ja einen Button auf dein Formular ziehen und im Assistenten dann Datensatz duplizieren wählen.

Bei mir wird der Autowert erhöht, wie es auch sein soll. Mit dem Ausgangsdatensatz verknüpfte Daten werden natürlich nicht mitkopiert.

Gruß
Ralf
 
Ich hab nund versucht das ganze Duplizieren mit Hilfe des VBA Codes zu machen
bekomme aber noch immer eine Fehlermeldung

Code:
    Dim db  As DAO.Database
    Dim rst As DAO.Recordset
    Dim ds  As DAO.Recordset
    Dim ds2 As DAO.Recordset
    Dim neue_Proben_id As Integer
    Dim fld As DAO.Field
    
    ' Verweis auf die aktuelle Db setzen
    Set db = CurrentDb
    'Recordset auf die Tabelle 1Proben
    Set rst = db.OpenRecordset("1Proben")
    
    'Ermittlung der Maximalen ID
    Set ds2 = db.OpenRecordset("Select max(ID) From 1Proben")
    'Neue ID (ProbenID) zwischenspeichern
    neue_Proben_id = rst!ID
    neue_Proben_id = neue_Proben_id + 1
    
    'Datensatz der kopiert wird
    Set ds = db.OpenRecordset("SELECT * FROM 1Proben " & _
                              "WHERE ID = " & ID)
    'Neuen Datensatz einfügen
    rst.AddNew
    
    For Each fld In ds.Fields
        If fld.Name <> "ID" Then
            rst(fld.Name) = ds(fld.Name)
        Else
            rst(fld.Name) = neue_Proben_id
            
        End If
    Next fld
    rst.Update

Jetzt bekomme ich den Laufzeitfehler 3022 welcher mir sagt, dass der Index mehrfachvorkommende Werte beinhaltet!
Kann mir jemand einen Tipp geben?!
 

Neue Beiträge

Zurück