2016-04-25 7 views
1

Ich arbeite als Praktikant an einer Datenbereinigung und bin mit einigen der Daten, mit denen ich arbeite, in eine Sackgasse geraten.MicrosoftAccess/Excel: Wie aktualisiere ich ein Feld in einer Tabelle so, dass es einem Feld in einer anderen Tabelle entspricht, wenn zwei Felder in diesen Tabellen übereinstimmen?

Ich versuche, übereinstimmende Serien- und Teilenummern aus einer Tabelle in die neue Tabelle zu verschieben, aber nur, wenn zwei andere Felder tabellenübergreifend übereinstimmen.

Grundsätzlich gilt:

I want [GPFixedAsset].[OasisPar] to update to [OasisFixedAssets].[PartNumber] 
if [GPFixedAsset].[OasisLink] = [OasisFixedAssets].[SysIDOasis] 

Und dann das gleiche gilt für die Seriennummer:

[GPFixedAsset].[OasisSer] to update to [OasisFixedAssets].[SerialNumber] 
if [GPFixedAsset].[OasisLink] = [OasisFixedAssets].[SysIDOasis]. 

Ich bin immer noch SQL versuchen zu lernen, aber es ist ein wenig verwirrend, gerade jetzt.

Wenn es in Excel mit einer Formel gemacht werden kann, wäre das großartig. Aber wenn ich zwei separate Abfragen ausführen kann, um meine Tabelle zu aktualisieren, damit ich sie zurück nach Excel exportieren kann, wäre das großartig.

EDIT:
Vielen Dank für die Antworten. Am Ende habe ich es aussortiert, indem ich eine Auswahlabfrage ausgeführt habe, um alle Felder zu finden, die zwischen OasiLink und SysIDOasis übereinstimmen, und dann getrennte Aktualisierungsabfragen basierend auf der Abfrage ausgeführt, um die Felder auf den korrekten Wert zu aktualisieren.

+0

Es könnte auch möglich sein, die Formeln in Excel verwenden, wäre es nur als Referenz dienen und nicht Wert von 1 Ort zum anderen kopieren. Definitiv möglich mit VBA in Excel und SQL in Access. Worauf genau achten Sie? – Spidey

Antwort

0

Das SQL-Format:

Leider kann ich nicht kommentieren, so habe ich eine Antwort zu benutzen, aber ich würde vorschlagen, Variables und Cursor mit diesem durch SQL zu erreichen.

Cursor ist eine Schleife, die jede Zeile nacheinander liest. Innerhalb des Cursors können Sie den Wert in der Variable speichern und vergleichen. Wenn sie dann das Update-Skript ausführen Match:

DECLARE @Value1 = NVARCHAR(50) 
DECLARE @Value2 = NVARCHAR(50) 

würde Jedes Mal, wenn sie durch den Cursor ging es um jeden Wert aktualisieren

So würde die Update-Anweisung so etwas wie

Update [GPFixedAsset] 
Set [OasisPar] = @Value1 
Where @Value1 = Value2 

Ich musste Mach etwas ähnliches am anderen Tag, also ist das der beste Weg, den ich gemacht habe.

Hoffe, dass es hilft, Sam

Verwandte Themen