Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Tabellenspalte nach diversen Vorgaben und Vergleich befüllen

Begonnen von Adrjan, Juli 16, 2014, 17:40:07

⏪ vorheriges - nächstes ⏩

Adrjan

Hallo zusammen,

ich hoffe jemand kann mir hier weiterhelfen.
Zusammengefasst möchte ich eine Tabellenspalte nach bestimmten Kriterien und durch Vergleich mit einer anderen Tabelle/Spalte befüllen.
Das habe ich in zwei Schritte unterteilt:

SCHRITT1:

Als Ausgangslage habe ich beispielsweise folgende Tabelle:
Tabellenname: tbl1
Spalten: ziel; start
Datenzeile1: leer;1234567
Datenzeile2: leer;7654321
Datenzeile3: leer;1234765
Datenzeile4: leer;6547878
Datenzeile5: leer;4551235
Datenzeile6: leer;4578524

Die Spalte start soll nun zunächst mit der Spalte "Kriterium" einer anderen Tabelle verglichen werden. Bei einen Treffer (tbl2.Kriterium = tbl1.start) soll die neue Nummernfolge (tbl2.nrneu) in die entsprechende Spalte (ziel) in tbl1 geschrieben werden. Sollte tbl2 keine Daten beinhalten soll dieser Schritt übersprungen werden.

Hier ein Beispiel von tbl2:

Tabellenname: tbl2
Spalten: nrneu; Kriterium
Datenzeile1: 1239999;1234567
Datenzeile2: 7659999;7654321
Datenzeile3: 1239999;1234765

SCHRITT2:

Für alle restlichen Datensätze soll nun folgendes Schema ablaufen:
eweils die letzen vier Ziffern der Zahelnfolgen von Spalte start von tbl1 (tbl1.start) sollen abgeschnitten werden und mit 1ern aufgefüllt werden und nach tbl1.ziel an entsprechender Stelle geschrieben werden.

letztendlich soll aus den genannten beiden Schritten folgendes Ergebnis resultieren:

Tabellenname: tbl1
Spalten: ziel; start
Datenzeile1: 1239999;1234567
Datenzeile2: 7659999;7654321
Datenzeile3: 1239999;1234765
Datenzeile4: 6541111;6547878
Datenzeile5: 4551111;4551235
Datenzeile6: 4571111;4578524

Wie wäre der VBA-Code bei so einer Prozedur?
Ich bin für jede Hilfe dankbar!

Vielen Dank und viele Grüße
Adrjan

MaggieMay

Hallo,

das ließe sich mit zwei Aktualisierungsabfragen lösen:
Update tbl1 Inner Join tbl2
ON tbl1.start = tbl2.kriterium
Set tbl1.ziel = tbl2.nrneu

Update tbl1 Set tbl1.ziel = Left(tbl1.start,3) & "1111"
Where tbl1.start Not In (Select kriterium From tbl2)
Freundliche Grüße
MaggieMay

Adrjan

#2
Vielen herulichen Dank, dass hilft mir sehr weiter!

Ich habe noch eine kleine Frage bzgl. dem Zusammenführen von verschiedenen Datensätzen.

Angenommen, ich möchte eine Abfrage machen, welche bestimmte Datensätze aus einer anderen Abfrage in eine Tabelle schreibt. Der eingefügte Datensatz soll jedoch anhand bestimmter kriterien zusammengesetzt werden.
Beispielsweise habe ich folgendes Abfrageergebnis als Grundlage:

NAME: QUERY1
Spalte: NR1;NR2;NR3;NR4
Datenzeile1: 11;55;666;55
Datenzeile2: 22;66;444;33

Diese Daten sollen durch eine Abfrage (INSERT INTO...) in eine Tabelle geschrieben werden. Aber so, dass in den Spalten (ZIEL1 und ZIEL2) eine zusammengesetzte folge von NR1,NR2,NR3 und NR4 für ZIEL1 und NR2, NR3 (nur die letzten beiden Stellen) und NR4 für ZIEL2 geschrieben wird.

Das Ergebnis soll folgendermaßen aussehen:

NAME:tbl1
Soalte:ZIEL1; ZIEL2
Datenzeile1: 115566655;556655
Datenzeile2: 226644433;664433

Für nochmalige Hilfe tausend Dank!!!

MaggieMay

Hallo,

den Sinn des Ganzen hinterfrage ich mal nicht... ;-)

So könnte der SQL-Code aussehen:Select NR1 & NR2 & NR3 & NR4 AS ZIEL1,
Right(NR2, 2) & Right(NR3,2) & NR4 AS ZIEL2
INTO tabneu
FROM Query1

Oder sollte es eine Anfügeabfrage werden?
Dann so:Insert Into tab2 (Ziel1, Ziel2)
Select NR1 & NR2 & NR3 & NR4,
Right(NR2, 2) & Right(NR3,2) & NR4
FROM Query1
Freundliche Grüße
MaggieMay

Adrjan

Vielen Dank!
Ich meinte auch eine Anfügeabfrage.

Npch kurz ergänzend:
Amgemmon ich habe folgendes Abfrageergebnis:
NAME: QUERY1
Spalte: NR1;NR2;NR3;NR4
Datenzeile1: 11;55;6;55
Datenzeile2: 22;66;044;33

und ich möchte folgendes Ergebnis erhalten:

NAME:tbl1
Soalte:ZIEL1; ZIEL2
Datenzeile1: 115566655;5500655
Datenzeile2: 226644433;6604433

In Ziel 2 soll somit stets eine 7-stellige Zahl stehen und sobald ein Datenfeld weniger als die erwartete Zeichenlänge (in dem Fall 3) besitzt, soll dieses mit "0" aufgefüllt werden. Wäre da auch mit einer Abfrage machbar?

MaggieMay

Und wenn man dir jetzt einen Lösungsvorschlag für die neuen Regeln macht, kommst du anschließend wieder mit einer neuen Variante?!
Soll heißen, denk doch erstmal gründlich darüber nach, wie die Zielfelder zusammengebaut werden sollen, ehe du nach einer Lösung fragst, denn deine beiden Beschreibungen sind eindeutig widersprüchlich.
Einmal sollen nur zwei Stellen verwendet werden, dann aber sollen sie mit führenden Nullen aufgefüllt werden.
ZitatIn Ziel 2 soll somit stets eine 7-stellige Zahl stehen
Das nämlich sah in deinem ersten Beitrag noch anders aus.

Eigentlich solltest du anhand des Lösungsvorschlags in der Lage sein, die Sache selbstständig zum Ende zu bringen. Es wurde gezeigt, wie man Felder verkettet und wie man Teilstrings erzeugt. Ein Blick in die Access-Hilfe bzgl. "Right" führt dich zu weiteren String-Funktionen, die evtl. hilfreich sein könnten. Und mit der Format-Funktion lassen sich führende Nullen hinzufügen.
Freundliche Grüße
MaggieMay