SQL nach Werten durchsuchen Werte daneben eintragen

Koncti

Benutzer
Beiträge
5
Hallo zusammen,

ich suche nach einer Lösung für folgendes Problem.

Derzeit habe ich eine SQL-Datenbank in die Daten eingespielt werden, wenn ein Etikettendruck ausgeführt wird. Das funktioniert soweit wunderbar.
In der Datenbank sind z.B. folgende Spalten zu finden:
A=Haus, B=Werk, C=Datum
Die Spalten werden mit jedem Druck mit Werten gefüllt.

Jetzt brauche ich folgende Lösung:
Ich habe eine Eingabemaske erstellt, in der ich identische Werte (jeden Wert in Spalte A,B,C gibt es nur einmal - also ist es eine direkt Zuordnung) eintrage. Die Werte sollen bei der Übertragung (Ausführen) der Eingabemaske mit den Werten in der Datenbank abgeglichen werden und die weiteren Ergebnisse in die Spalten rechts daneben geschrieben werden (Es sind 1-2 andere Ergenisse)

Kurz gesagt: Abgleich von Spalten und den Werten in der SQL Datnebank und die Spalten direkt daneben mit zusätzlichen Informationen beschreiben.


Hättet ihr für mich eine Formel zum da?

Ich habe absolut keine Ahnung von SQL.

Grüße
Koncti
 
Werbung:
Es ist wie in Erdkunde, es gibt kein Rechts, Links, Oben oder Unten, soviel erstmal dazu :)

Deine Eingabemaske entstammt ja irgendeiner Programmiersprache oder Software. Die muss nur folgende grundlegende Dinge tun:

1) Prüfen, ob der Datensatz schon existiert.
Code:
SELECT 1 FROM tabelle WHERE spalteA=variableA AND spalteB=variableB AND spalteC=variableC
Wenn das ein Ergebnis liefert, sind deine Daten schon da dann kommt
2) ein Update auf den vorhandenen Datensatz
Code:
UPDATE spalteD='deine neuen Daten' FROM tabelle WHERE spalteA=variableA AND spalteB=variableB AND spalteC=variableC
3) Wenn der Datensatz nicht existiert fügst du einen ein
Code:
INSERT INTO tabelle(spalteA,spalteB,spalteC,spalteD) VALUES(variableA,variableB,variableC,variableD);

Und das ist schon das ganze SQL was du brauchst, den Rest macht dein Programm.
 
Oder gleich ein Upsert (je nachdem wir das bei MSSQL heisst).
Hier wird ein Update ausgeführt, wenn Daten existieren und wenn diese nicht existieren wird ein Insert ausgeführt.
 
Werbung:
Moin zusammen,
danke für die schnellen Antworten!
Es klappt irgendwie nicht so ganz. Ich habe jetzt folgenden Code drin

Dim dbopen, result, Insert, Update, Value

Set dbopen=CreateObject("ADODB.Connection")
dbopen.Open "Provider=SQLOLEDB;Server=XXXXXXXXXXX,XXXXXXXX;DATABASE=XXXXXXXXXXXXX;UID=XXXXXXXXXXXX;PWD=XXXXX"

SELECT 1 FROM Table_2 WHERE spalteB=[varWerkNVE] AND spalteD=[varMaterialNVE] AND spalteE=[varChargeNVE] AND spalteF=[varMHDNVE]

UPDATE spalteI='[varMengeNVE]' FROM Table_2 WHERE spalteB=[varWerkNVE] AND spalteD=[varMaterialNVE] AND spalteE=[varChargeNVE] AND spalteF=[varMHDNVE]

dbopen.Close

Er sagt mir bei "SELECT 1" wird ein CASE erwartet.


Grüße
Koncti
 
Zurück
Oben