Werte inkl Autowert in Tabelle kopieren

Moderator: ModerationP

Werte inkl Autowert in Tabelle kopieren

Beitragvon Dieterlem » 15. Aug 2019, 16:32

Hallo Access Freunde,

ich muss aus zwei Backendtabellen eine machen. Beide Backends sind fast identisch. In dem neueren gibt es mehr Tabellenspalten. Wie kann ich also die Werte aus einer Tabelle in die andere kopieren und dabei den Autowert (Primärschlüsselfeld) mit übernehmen?
Das dumme ist, dass ich das schon mal gemacht habe und mich nicht mehr entsinnen kann wie. Ich hatte dafür eine tolle Anleitung gefunden und finde Sie nicht wieder.


Gruß
Dieterlem
langsam verstehe ich es besser...und doch bleiben noch soo viele Fragen.
Dieterlem
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 175
Registriert: 04. Mär 2007, 20:15
Wohnort: Pfalz

Re: Werte inkl Autowert in Tabelle kopieren

Beitragvon KlausMz » 15. Aug 2019, 16:41

Hallo,
In dem neueren gibt es mehr Tabellenspalten.
Und die Daten, wie sieht es damit aus ?
Wenn sich nur die Anzahl der Tabellenspalten unterscheidet, spielt doch der Autowert keine Rolle.
Dann tut es eine Aktualisierungsabfrage in die um die fehlenden Spalten manuell ergänzte Tabelle.
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Benutzeravatar
KlausMz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 39108
Registriert: 06. Okt 2003, 15:09
Wohnort: Irgendwo in der Pfalz

Re: Werte inkl Autowert in Tabelle kopieren

Beitragvon Dieterlem » 15. Aug 2019, 16:53

Ich versuche es mal zu erklären. Es handelt sich um mehrere Tabellen, die miteinander anhand der ID verknüpft sind.

In der alten Tabelle gehen die Datensätze bis zur ID 1000.
In der neuen wurden ein Teil der DS gelöscht und hat z.B 800 - 2000.
Ziel ist es aus beiden Tabellen eine zu machen also 1 - 2000.
Da die ID's in anderen Tabellen als Fremdschlüssel dienen ist es notwendig, dass der Autowert(ID) mit übernommen wird.

Gruß
Dieterlem
langsam verstehe ich es besser...und doch bleiben noch soo viele Fragen.
Dieterlem
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 175
Registriert: 04. Mär 2007, 20:15
Wohnort: Pfalz

Re: Werte inkl Autowert in Tabelle kopieren

Beitragvon knobbi38 » 15. Aug 2019, 17:14

Hallo Dieterlem,

das geht doch mit einer normaler Anfügeabfrage. Wo ist jetzt genau das Problem?

Gruß Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1308
Registriert: 02. Jul 2015, 14:23

Re: Werte inkl Autowert in Tabelle kopieren

Beitragvon KlausMz » 15. Aug 2019, 17:17

Hallo,
das würde nur funktionieren, wenn es in beiden Tabellen keine doppelten Autowerte gibt.
Du kannst es ja mal an einer Kopie probieren.
In eine vorgefertigte Tabelle per Anfügeabfrage übertragen. Mit der Tabelle beginnen die den höchsten letzten Autowert. enthält.
Und dann bei der neuen Tabelle einen Datensatz anlegen und sehen ob der AW korrekt weiterzählt. Der AW ist dann aber verloren.
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Benutzeravatar
KlausMz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 39108
Registriert: 06. Okt 2003, 15:09
Wohnort: Irgendwo in der Pfalz

Re: Werte inkl Autowert in Tabelle kopieren

Beitragvon SGast » 15. Aug 2019, 18:07

Hallo,
ich würde eine neue Tabelle mit allen Spalten (inkl. Autowert) anlegen.
Im nächsten Schritt in dieser Tabelle 2000 Dummy-Datensätze generieren.
Nun kannst du die DS aus beiden Tabellen per Aktualisierungsabfrage übertragen.
Als letzten Schritt löschst du die übrig gebliebenen Dummy-Datensätze.

Gruß Steffen
SGast
 

Re: Werte inkl Autowert in Tabelle kopieren

Beitragvon knobbi38 » 15. Aug 2019, 18:12

@KlausMz:
Bei einer Anfügeabfrage kann der ID (Autowert) explizit mitgegeben und überschrieben werden und wird dabei nicht automatisch weiter gezählt, z.B.:
Code: Alles auswählen
INSERT INTO tblData ( ID, Vorname, Nachname )
SELECT [tblData_Old].ID+1000 AS NewID,
       [tblData_Old].Vorname,
       [tblData_Old].Nachname
FROM [tblData_Old];

würde funktionieren. So kann man die Autowerte auch in andere Bereich verschieben, wie hier im Beispiel mit dem Offset +1000. Im diesem Beispiel ist tblData_Old einfach nur eine Kopie von tblData.

Gruß Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1308
Registriert: 02. Jul 2015, 14:23

Re: Werte inkl Autowert in Tabelle kopieren

Beitragvon Gast » 15. Aug 2019, 18:28

das Problem liegt in schon vorhandenen Fremdschlüsselwerten in Datensätzen anderer Tabellen.
Diese muss man in die Betrachtung und darauf folgende Lösungen einbeziehen.
Gast
 

Re: Werte inkl Autowert in Tabelle kopieren

Beitragvon KlausMz » 15. Aug 2019, 18:29

Hallo,
@Ulrich
ich habe schon viel experimentiert im Zusammenhang mit Autowerten. Da kann man einige Überraschungen erleben.
Dass man per Anfügebfragen auch Autowerte übertragen (und setzen) kann ist mir bekannt.
Aber wie gesagt, doppelte Werte darf es nicht geben. Und wenn es 2 Tabellen sind, muss mit mit der Tabelle begonnen werden die den niedersten höchsten Autowert hat.
Ich habe die Erfahrung gemacht, dass nach solchen Aktionen der Autowert nicht mit dem nächsten höchsten Wert weiter zählt.
Wenn man z.B. erst von 1000-2000 anfügt und dann 1-999, zählt bei einem neuen Datensatz der Zähler bei 1000 weiter, was dann zu einem Fehler führt.
In diesem Falle muss man per Anfügeabfrage einen Datensatz mit 2001 anlegen, damit mit 2002 weiter gezählt wird. Die 2001 ist dann verloren.

Siehe Bild. Da habe ich den AW 0 per AnfAbf angefügt. Der Autowert zählt jetzt mit 1 weiter. Man müsste jetzt eine 12 anfügen, damit der AW bei 13 weiter macht.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Benutzeravatar
KlausMz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 39108
Registriert: 06. Okt 2003, 15:09
Wohnort: Irgendwo in der Pfalz

Re: Werte inkl Autowert in Tabelle kopieren

Beitragvon Dieterlem » 15. Aug 2019, 18:42

OK ich habe es:

1. Kopie der aktuellsten Tabelle, welche alle Spalten hat) erstellen. Dabei nur Struktur kopieren
2. Anfügeabfrage erstellen, Die Tabelle mit den ältesten Datensätze auswählen und an die eben erstellte (leere Tabelle) anfügen.
3, Anfügeabfrage erstellen, Die Tabelle mit den neueren Datensätze auswählen und an die eben erstellte (mit den Daten von der ältesten Tabelle) anfügen.

Der Autowert wird bei einer Anfügeanfrage aus der anderen Tabelle übernommen.

Danke für die Hinweise. Das hat mich auf den richtigen Pfad gebracht.


Gruß
Dieterlem
langsam verstehe ich es besser...und doch bleiben noch soo viele Fragen.
Dieterlem
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 175
Registriert: 04. Mär 2007, 20:15
Wohnort: Pfalz

Re: Werte inkl Autowert in Tabelle kopieren

Beitragvon KlausMz » 15. Aug 2019, 18:46

Hallo,
jetzt musst Du unbedingt mit einen Probedatensatz prüfen ob der AW korrekt weiter zählt. Der Autowert wäre dann verloren.
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Benutzeravatar
KlausMz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 39108
Registriert: 06. Okt 2003, 15:09
Wohnort: Irgendwo in der Pfalz

Re: Werte inkl Autowert in Tabelle kopieren

Beitragvon Dieterlem » 15. Aug 2019, 19:17

KlausMz hat geschrieben:Hallo,
Man müsste jetzt eine 12 anfügen, damit der AW bei 13 weiter macht.

Was ist, wenn man danach die DB komprimiert und repariert? Dann sollte sie doch mit dem nächst höchsten weiter machen.
Nicht getestet nur gelesen.


Gruß
Dieterlem
langsam verstehe ich es besser...und doch bleiben noch soo viele Fragen.
Dieterlem
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 175
Registriert: 04. Mär 2007, 20:15
Wohnort: Pfalz

Re: Werte inkl Autowert in Tabelle kopieren

Beitragvon knobbi38 » 15. Aug 2019, 19:52

@Klaus,
Danke, daß du das nochmal so ausführlich erklärt hast.

Ich habe mal gerade noch mal zwei Dinge getestet:
  1. Anfügeabfrage mit kleinerem ID, z.B. 200-300, wobei die IDs 1000-1041 bereits vergeben waren und anschließendem Komprimieren:
    Danach war der nächste Autowert 1042, also korrekt und nicht 301. (Anm.: übringens entgegen der Doku).
  2. Nach dem Anfügen den nächsten Autowert mit DDL auf den Maxwert + 1 festlegen -> Neue DS bekommt den vorgegebenen Autowert.
    Code: Alles auswählen
    CurrentProject.Connection.Execute "ALTER TABLE tblData ALTER COLUMN ID IDENTITY(1042,1)"
Auf jeden Fall sollte man Vorsicht walten lassen und genau aufpassen!

Gruß Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1308
Registriert: 02. Jul 2015, 14:23


Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste