Neuigkeiten:

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

Mobiles Hauptmenü

Brauche Hilfe: 2 Tabellen vergleichen und einen Wert aktualisieren

Begonnen von fonky, Februar 24, 2012, 21:49:27

⏪ vorheriges - nächstes ⏩

fonky

Hallo.
Ich bräuchte etwas Hilfe um eine Abfrage in Access zu erstellen. Vorweg möchte ich sagen, das ich so gut wie keine Kenntnisse über Access habe.

Ich habe 2 Tabellen.Eine Tabelle heisst "Preise alt" die andere "Preise neu".Beide Tabellen sind mit Exel erstellt worden (.csv).

Da ich diese Tabellen in Access anfangs nicht richtig öffnen konnte (Zeilen- und Spalteninhalt war hinterher immer total durcheinander), habe ich sie nun in Exel als normales Arbeitsblatt gespeichert und öffne sie nun in Access indem ich auf "Externe Daten" und dann auf "Exel" klicke.Ich weiss ja nicht ob das der korrekte Weg ist...?

Nun möchte ich die Tabelle "Preise alt" mit der anderen Tabelle aktualisieren. Das heisst ich habe in jeder Tabelle eine Spalte "Artikelnummer" und eine Spalte "Preis".Hierzu möchte ich sagen, dass die Tabelle "Preise neu" noch ein paar zusätzliche Artikelnummern enthält, die es in "Preise alt" nicht gibt und die auch nicht hierhin übernommen werden sollen.Demzufolge stehen die Artikelnummern in beiden Tabellen nicht in der selben Reihenfolge.

Ich möchte also die Preise aus den Zeilen mit identischer Artikelnummer aktualisieren.

Beispiel:

Tabelle "Preise alt":   Artikelnummer: 777   Preis: 2,99
Tabelle "Preise neu":  Artikelnummer 777   Preis: 3,99

Meine Abfrage soll nun die Zeilen mit identischer Artikelnummer aus beiden Tabellen vergleichen und den Wert der Spalte "Preis" in der Tabelle "Preise alt" durch den der Tabelle "Preise neu" ersetzen.

Ganz toll wäre natürlich wenn mir die Zeilen, deren Artikelnummer nur in einer der beiden Tabellen enthalten ist irgendwie angezeigt werden (farblich hervorgehoben falls sowas möglich ist).

Ich hoffe das mir jemand damit helfen kann. Ich  weiss wie ich die beiden Tabellen unter "Abfrageentwurf" öffne, weiss aber nicht was ich dann machen muss.Ich weiss nicht wie man etwas verknüpft oder was man überhaupt verknüpfen muss.
Ich bedanke mich im Voraus für jederlei Hilfe.


Beaker s.a.

Hallo fonky,
Erstmal benenne Deine Tabellen um; - schaust Du hier: http://www.donkarl.com?FAQ1.5
Dann sollte (Luftcode)

UPDATE PreiseAlt AS A
    INNER JOIN PreiseNeu AS N
    ON A.ID = N.ID
SET A.PAlt = N.PNeu

eigentlich das richtige Ergebnis bringen.
Die Artikel aus PreiseNeu, die nicht in PreiseAlt sind bleiben dabei unberücksichtigt.
Wie Du die anzeigen kannst findest Du hier: http://www.donkarl.com?FAQ3.16
hth
gruss ekkehard
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)

database

Hallo,

Zitat... indem ich auf "Externe Daten" und dann auf "Exel" klicke.
Und welche der angebotenen Möglichkeiten hast du gewählt?

Wenn du die Tabellen hier nicht IMPORTIERT hast, kannst du keine Aktualisierung durchführen.
Verknüpfte Excel-Tabellen lassen sich nicht mit einer Aktualisierungsabfrage ändern!

Wenn du sie richtig IMPORTIERT hast und die Tabellen nun praktisch als Accesstabellen erscheinen ...  Vorschlag von Beaker

fonky

Hallo,

danke erstmal für die Tipps.Leider hab ich mein Vorhaben noch nicht umsetzen können  :(

@database: Ich habe dort meine Tabellen und den ersten Punkt ausgewählt ( "Importieren Sie die Quelldaten in eine neue Tabelle in der aktuellen Datenbank"). Ich denke das ist richtig? Hat auf jeden Fall funktioniert.

@Beaker s.a.:
Leider verstehe ich das mit dem Code nicht ganz.Ich habe die beiden Tabellen geöffnet bzw. importiert und dann in der Ansicht auf sql umgestellt und den Code eingefügt. Wenn ich die Abfrage ausführe kommt eine Meldung dass 0 Werte aktualisiert werden und es wird auch nichts aktualisiert.Die beiden Tabellen enthalten aber definitiv verschiedene Werte.
Wie genau müssten meine Spalten denn benannt sein? Muss ja zu dem Code passen, ich blick da leider überhaupt nicht durch.

Oder kann mir vielleicht jemand sagen wie ich diese Abfrage in der Entwurfansicht erstelle? Vielleicht wäre das einfacher...

Würd mich freuen wenn mir jemand damit weiterhelfen kann.Vielen Dank.

database

Hallo,

ZitatWie genau müssten meine Spalten denn benannt sein?
GAAAANZ GENAU!

Im SQL-Code müssen die Spaltennamen und / oder Tabellennamen genau so lauten, wie sie in der Tabelle stehen bzw wie die Tabelle heißt!

ZitatOder kann mir vielleicht jemand sagen wie ich diese Abfrage in der Entwurfansicht erstelle?
Erstelle eine neue Abfrage, hole die beiden beteiligten Tabellen in den Entwurf.
Verbinde die beiden Tabellen über deren Primärschlüssel (ID)
Wähle als Abfrageart 'Aktualisierungsabfrage'
und trage unter dem Feld 'PreisAlt' der Tabelle 'PreisAlt' ins Feld 'Aktualisieren' ein ...  TabellePreisNeu.PreisNeu  ... Tabellennamen und Spaltennamen an die tatsächlichen Gegebenheiten anpassen!

HTH

koch

Wenn die Primärschlüssel in den beiden Tabellen nicht übereinstimmen funtioniert das mit der Aktualisierungs-Abfrage leider nicht. Habe dann die Beziehung über den jeweiligen Preis hergestellt und siehe da es klappt wunderbar. :)

MzKlMu

Hallo,
ZitatHabe dann die Beziehung über den jeweiligen Preis hergestellt und siehe da es klappt wunderbar.
und Deine Preise ändern sich nie ?
Gruß Klaus