Neuigkeiten:

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

Mobiles Hauptmenü

Daten mit Abfragen in neue DB übernehmen

Begonnen von gsaccess, April 25, 2023, 10:05:31

⏪ vorheriges - nächstes ⏩

gsaccess


Ich bin gerade dabei, Daten in die neu angelegte Datenbank zu übernehmen.
In der alten Datenbank stehen in der Kundentabelle bei der Anrede: Firma, Frau, Herr,.. (also Text)
In der neuen Datenbank gibt es für die Anrede eine eigene Tabelle mit einem PK.
1=Firma, 2=Frau,...
Das gleiche bei Ort und PLZ. In der alten Tabelle steht der Text, in der neuen gibt es eigene Tabellen mit PK und Verknüpfung mit FK....
Gibt es eine Abfragemöglichkeit mehrere Kriterien in einer Aktualierungsabfrage zu erledigen (Wenn Firma dann 1, Wenn Frau dann2,...) oder muss ich die neue Tabelle händisch mit vielen Abfragen aktualisieren?
Zur besseren Erklärung in der Anlage das Beziehungsfenster neu und alt.

Beaker s.a.

Hol dir die IDs mit DLookup aus den Nachschlagetabellen.
Prinzip
..., Dlookup("AnredeID", "Anreden", "Anrede = '" & Quelle.Anrede & "'"), ...
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

ebs17

Mit freundlichem Glück Auf!

Eberhard

gsaccess

Danke für die Hilfe, aber mit den SQL Abfragen komme ich nicht klar.

Ich habe schon verschiedenste Abfragen erstellt. In der alten DB habe ich mit 4 Abfragen die Anrede in der Tabelle Stammdaten mit den Ziffern 1 bis 4 ersetzt. Wenn ich dann die Kundendaten in die neue DB durch eine Anfügeabfrage übertrage, wird aber bei der tblKunden wieder der Text Firma... geschrieben.
Kann ich das einfacher lösen oder muss ich in der neune tblKunden die Anrede einzeln durch Ziffern ersetzen?
In der Anlage Beispieldaten der alten und neuen DB.

Günther

ebs17

Als Erstes solltest Du Nachschlagefelder in Tabellen beseitigen. Wenn man live und ohne zusätzliche Überlegung sieht, welche Inhalte man hat und welche folglich eingefügt werden sollen, erspart das eine Menge Irritationen, z.B. bei Abfragen.
Mit freundlichem Glück Auf!

Eberhard

MzKlMu

Hallo,
und ich würde auch keine Wertelisten (AdressenartID_F) für Kombinationsfelder verwenden, sind viel zu unflexibel. Kommt eine Adressenart dazu, erfordert das Änderungen an den Entwürfen, was zu vermeiden ist.
Daher ist auch dazu eine Tabelle anzulegen.
Gruß Klaus

gsaccess

Vielen Dank für eure Rückmeldung.
@ Eckhard
Wie meinst du das mit den Nachschlagefeldern. In den Tabellen sind alle Fremdschlüssel - Long Integer Zahlen.
Oder ist damit das Kombinationsfeld im Formular gemeint.
ZB bei der Anrede wird über ein Kombinationsfeld die richtige Anrede ausgewählt. (Firma, Frau, Herr,...)
Unklar ist mir, warum in der tblKunden nicht 1,2,3,.. =Autowert der Tabelle tblAnrede gespeichert wird, wenn die gebundene Spalte des Kombinationsfeldes die AnredeID ist.
Siehe auch Formular für die Kundenerfassung in der Anlage.

@klaus
Ich habe doch eine eigene tblAdressenart angelegt. Oder habe ich das auch nicht richtig verstanden? (siehe Beziehungsbild)

Günther

MzKlMu

#7
Hallo,
Du hast die Nachschlagefelder als Kombinationsfelder in den Tabellen direkt angelegt. Dort sind die unbedingt wieder zu entfernen. In den Formularen können diese bleiben.

Da es zu einem Kunden mehrere Adressen geben kann, müssen die Adressen in einem Unterformular angezeigt werden. Direkt auf dem Hafo geht das nicht.
Gruß Klaus

gsaccess

Ich habe die Felder als Zahl angelegt. Werden diese Felder durch die Beziehungen als Kombinationsfelder so angelegt?
Wie kann ich die Nachschlagefelder als Kombinationsfelder löschen?

Günther

MzKlMu

Hallo.
Im Tabellenentwurf kannst du aus den Nachschlagefeldern wieder Textfelder machen.
Die Felder werden auch nicht automatisch angelegt, das hast du aktiv selbst gemacht, möglicherweise auch unbewusst.
Gruß Klaus

gsaccess

Ein Fremdschlüssel muss doch ein Long Integer sein, sonst kann er mit dem PK =Autowert nicht in Beziehung gesetzt werden. Textfeld funktioniert hier nicht.

Günther

MzKlMu

#11
Hallo,
Du bringst da was durcheinander. Textfeld im Tabellenentwurf ist eine allgemeine Bezeichnung für einen beliebigen Datentyp. Nach der Umstellung bleibt der Datentyp Longinteger erhalten, denn mit dem Datentyp des Feldes hat das nichts zu tun.
Siehe Bild.

Übrigens, die Felder für die Daten egal was da reingeschrieben wird sind auf Formularen und Berichten auch Textfelder.
Gruß Klaus

gsaccess

Vielen Dank für deine Geduld und fachliche Antwort, endlich habe ich es kapiert!!
Günther :)