[gelöst]Update per SQL von einer Tabelle in eine andere addi

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

[gelöst]Update per SQL von einer Tabelle in eine andere addi

Beitrag von eBayer »

Hallo Forum,
ich habe auch mal wieder eine Frage und würde mich über hilfreiche Antworten freuen.
Ich möchte aus einer Tabelle Werte (3 verschiedene Spalten) in eine andere (ebenfalls 3 verschiedene Spalten) hineinaddieren.
Beispiel: Umsatzerfassung in einer Tabelle. Die erfassten Werte sollen dann in eine andere Tabelle als statistischer Wert addiert werden.
Danach sollen die Daten der Erfassungstabelle wieder gelöscht werden, wobei es mir aber bei meiner Frage nur auf die Update-Funktion ankommt!
Bin zwar nicht fit in SQL, aber es ist ja wohl der einzig vernünftige Weg.
Ich verwende bei dieser Problemstellung übrigens die interne HSQLDB.
Danke im Voraus
eBayer
Zuletzt geändert von eBayer am Mo, 21.09.2009 14:01, insgesamt 2-mal geändert.
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Update per SQL von einer Tabelle in eine andere

Beitrag von Barlee »

Hallo eBayer,

folgende Annahme:
2 Tabellen "Wert1" und "Wert2"
jeweils mit Spalten "ID" (gemeinsames Attribut), "B1", "B2", "B3"

Code: Alles auswählen

UPDATE "Wert1" SET  
"Wert1"."B1" = "Wert1"."B1" + SELECT "Wert2"."B1" FROM "Wert2" WHERE "Wert1"."ID" = "Wert2"."ID", 
"Wert1"."B2" = "Wert1"."B2" + SELECT "Wert2"."B2" FROM "Wert2"  WHERE "Wert1"."ID" = "Wert2"."ID", 
"Wert1"."B3" = "Wert1"."B3" + SELECT "Wert2"."B3" FROM "Wert2"  WHERE "Wert1"."ID" = "Wert2"."ID"
Gruß Barlee
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Update per SQL von einer Tabelle in eine andere

Beitrag von eBayer »

Danke Barlee, genau das habe ich gesucht und werde es nachher ausprobieren.
Gruss eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Update per SQL von einer Tabelle in eine andere

Beitrag von eBayer »

Hallo Barlee,
leider haut das bei mir nicht hin. Könntest Du Dir mal den Code anschauen?
Beide SQL-Varianten ausprobiert (also auch die geremte) ... in beiden Fällen die gleiche Fehlermeldung beim ausführen des SQL-Statements.
Eigentlich müsste ich die geremte Variante benutzen, denn ich muß in die Zieltabelle hineinaddieren. Die 2. Variante habe ich nur zum Test eingebaut.
Die Tabellennamen und die Feldnamen habe ich wiederholt überprüft.

Sub PB_Abschliessen
if MsgBox ("soll der Wareneingang wirklich übernommen werden?" + Chr$(13) + "Danach ist keine weitere Bearbeitung mehr möglich!", 289, "Sicherheitsabfrage") = 2 then Exit Sub
Dim oStatement As Object, sSQL As String
Dim oForm As Object, oSubFormBestellung As Object
oForm = ThisComponent.DrawPage.Forms.getByName("Wareneingang")
oSubFormBestellung = oForm.getByName("SubFormBestellung")

' on Error goto Fehler
oStatement = getCon().createStatement
sSQL = "UPDATE ""Bestelldetails"" SET ""Bestelldetails"".""MengeWE"" = ""Bestelldetails"".""MengeWE"" + SELECT ""Wareneingangsdetails"".""Menge"" FROM ""Wareneingangsdetails"" WHERE ""Bestelldetails"".""BestelldetailID"" = ""Wareneingangsdetails"".""BestelldetailID"""
' sSQL = "UPDATE ""Bestelldetails"" SET ""MengeWE"" = SELECT ""Menge"" FROM ""Wareneingangsdetails"" WHERE ""Bestelldetails"".""BestelldetailID"" = ""Wareneingangsdetails"".""BestelldetailID"""
oStatement.execute(sSQL)
sSQL = "UPDATE ""Wareneingang"" SET ""Wareneingang"".""Status"" = 1 WHERE ""Wareneingang"".""ID"" = " + oForm.getByName("fmtID").text
oStatement.execute(sSQL)
oStatement.close()
oForm.reload
oSubFormBestellung.reload
goto Fertig
Fehler:
msgbox("Verbuchug der Daten unvollständig!", 16, "bitte prüfen")
Fertig:
End Sub

Danke für Deine geduldige Hilfe.
Gruß eBayer
Fehlermeldung.jpg
Fehlermeldung.jpg (11.71 KiB) 617 mal betrachtet
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
gigabert
*****
Beiträge: 203
Registriert: Di, 11.08.2009 16:06

Re: Update per SQL von einer Tabelle in eine andere

Beitrag von gigabert »

Hallo eBayer,

hast du mal versucht, die SELECT-Anweisung in Klammern zu setzen? Keine Ahnung, ob das ohne Klammern so funktioniert.

Gruss
Bert
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Update per SQL von einer Tabelle in eine andere addieren

Beitrag von eBayer »

Hallo Bert,
danke für Deine Antwort.
Klammern habe ich schon an allen möglichen Stellen ausprobiert, aber das brachte entweder einen Fehler wegen falscher Klammersetzung oder den bereits oben beschriebenen.

Bin schon etwas weitergekommen: Ich musste die where Bedingung weiter auf mein aktuelles Dokument einschränken.
So klappt zumindest das Update..... Allerdings muß ich in die Felder was hineinaddieren und da setzt es bei mir aus!!
Gruß eBayer

Nachtrag: jetzt klappt auch die Addition. Ursache war, daß die Werte in der Zieltabelle nicht mit Null "0" voreingestellt waren.
Auf ein nicht initialisiertes Feld kann offensichtlich nichts addiert werden, was ja auch irgendwie logisch ist.
Blöd ist nur, daß in diesem Fall nicht einmal eine Fehlermeldung kommt. (es wird schlicht nicht addiert)
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Antworten