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
[gelöst]Update per SQL von einer Tabelle in eine andere addi
Moderator: Moderatoren
[gelöst]Update per SQL von einer Tabelle in eine andere addi
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
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
Re: Update per SQL von einer Tabelle in eine andere
Hallo eBayer,
folgende Annahme:
2 Tabellen "Wert1" und "Wert2"
jeweils mit Spalten "ID" (gemeinsames Attribut), "B1", "B2", "B3"
Gruß Barlee
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"
Re: Update per SQL von einer Tabelle in eine andere
Danke Barlee, genau das habe ich gesucht und werde es nachher ausprobieren.
Gruss eBayer
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
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
Re: Update per SQL von einer Tabelle in eine andere
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
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
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
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
Re: Update per SQL von einer Tabelle in eine andere
Hallo eBayer,
hast du mal versucht, die SELECT-Anweisung in Klammern zu setzen? Keine Ahnung, ob das ohne Klammern so funktioniert.
Gruss
Bert
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
Re: Update per SQL von einer Tabelle in eine andere addieren
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)
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
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