![]() |
AW: ADOQuery SQL Parameter keine Übergabe
Zitat:
|
AW: ADOQuery SQL Parameter keine Übergabe
Ich mache nix mit ADO, aber
Zitat:
|
AW: ADOQuery SQL Parameter keine Übergabe
Zitat:
Delphi-Quellcode:
verwechselt (Augen auf beim Eierkauf :mrgreen: )
TADOConnection.Execute
|
AW: ADOQuery SQL Parameter keine Übergabe
Das mit dem Update funktioniert ganz gut. Nun noch ein kleines Problem, in der Tabelle einen Tabelle sind Einkaufspreise gegeben. Ich muss nun in die neue Tabelle die berechnten Verkaufspreise übergeben.
Bis jetzt habe ich das hier:
Delphi-Quellcode:
Das Problem liegt auf der Hand, für jede Zeile in der Tabelle Warenbestand wird immer der selbe Preis-Wert ermittelt. Komm ich mit eine while not table1.Eof... table1.next weiter?
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Update Warenbestand set products_price = :price'); ADOQuery1.Parameters.ParamByName('price').Value := FloatToStr(PreisKalkulieren(table1.FieldByName('EK_EUR').AsFloat)); ADOQuery1.ExecSQL; |
AW: ADOQuery SQL Parameter keine Übergabe
Dann musst Du die alten Datensätze wohl durchgehen. Das bedeutet, dass das ADOCommand noch eine WHERE-Klausel benötigt, um den neuen Datensatz eindeutig zu identifizieren.
[edit] Es sei denn, der neue Preis wird immer gleich berechnet, dann kannst Du das auch per SQL in einem Rutsch machen. [/edit] |
AW: ADOQuery SQL Parameter keine Übergabe
Ich denke nicht, dass es so richtig ist. Hab mir das mal mit Where angeschaut und das query scheint nicht den nächsten Wert aus der Ausgangs-Tabelle zu ziehen.
Mit AdoTable sah das so aus:
Delphi-Quellcode:
Wo springt das Query mit Where auf die nächste Zeile in table1 ?
while not table1.eof do
begin table2.fieldbyname('products_price').AsFloat := CalcVerkaufsPreis(table1.fieldbyname('einkauf_price').AsFloat); table2.post; table1.next; table2.next; end; |
AW: ADOQuery SQL Parameter keine Übergabe
Wenn ich das richtig verstanden habe, willst Du die Daten aus der neuen Tabelle updaten und dabei Werte aus der anderen, alten Tabelle nutzen?
Das Stichwort ist "correlated subquery" also korrelierte Unterabfrage. Hier gibts ein schönes Beispiel, fast schon die passenden Felder, auf Deutsch und in Farbe :) ![]() Unter "Beispiel" Punkt 6 dürfte das stehen, was Du brauchst. EDIT: Hab Dein letztes Post übersehen, aber ich denke, Du kannst es mit einem einzigen update machen. EDIT2: Dein Beispiel sieht sehr eigenartig aus. Tabelle 1 und Tabelle 2 werden überhaupt nicht nach irgendeinem Schlüssel "synchronisiert", das wär höchstens Glückssache, wenn das klappt |
AW: ADOQuery SQL Parameter keine Übergabe
jobo, danke für denk link... sieht vielversprechend aus! wenns klappt melde ich mich ))
|
AW: ADOQuery SQL Parameter keine Übergabe
wenn's nicht klappt vermutlich erst recht ;)
|
AW: ADOQuery SQL Parameter keine Übergabe
haha )) ... so hat geklappt, danke!
hier mal ein beispiel aus meinem code:
Delphi-Quellcode:
Das mit dem Preis ist noch komplizierter, weil ich dort unterschiedliche prozent-kategorien haben...
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('UPDATE Warenbestand As W INNER JOIN KOMSA As K On W.external_id = K.KOMSANUMMER SET W.products_weight = K.GEWICHT/1000'); ADOQuery1.ExecSQL; gibts eigentlich so was wie ein if then in sql? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz