AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken MSAccess SQL Update Statement verkürzen?

MSAccess SQL Update Statement verkürzen?

Ein Thema von HCB · begonnen am 25. Mai 2021 · letzter Beitrag vom 27. Mai 2021
Antwort Antwort
Seite 1 von 2  1 2   
HCB

Registriert seit: 12. Feb 2020
134 Beiträge
 
Delphi 12 Athens
 
#1

MSAccess SQL Update Statement verkürzen?

  Alt 25. Mai 2021, 12:00
Datenbank: Access • Version: 2003 • Zugriff über: FireDac
Hallo, ich habe folgendes SQL-Statement zur Preisaktualisierung:

UPDATE sARTIKEL As A INNER JOIN ArtLief AS U
On A.ArtNR = U.ArtLiefArtNr
SET A.ArtZeit_0 = U.ArtLiefEkPreis,
where A.ArtZusinfo4 = U.ArtLiefLiefNr
and U.ArtLiefLiefNr = 'K000103';

update sArtikel set ArtVkPreis_0 = Round((ArtZeit_0 * 1.620)/ 0.85,2)
where ArtZusinfo4 = 'K000103' and ArtZeit_0 between 0.01 and 5.00;

update sArtikel set ArtVkPreis_0 = Round((ArtZeit_0 * 1.393)/ 0.85,2)
where ArtZusinfo4 = 'K000103' and ArtZeit_0 between 5.01 and 10.00;

update sArtikel set ArtVkPreis_0 = Round((ArtZeit_0 * 1.336)/ 0.85,2)
where ArtZusinfo4 = 'K000103' and ArtZeit_0 between 10.01 and 30.00;

update sArtikel set ArtVkPreis_0 = Round((ArtZeit_0 * 1.312)/ 0.85,2)
where ArtZusinfo4 = 'K000103' and ArtZeit_0 between 30.01 and 100.00;

update sArtikel set ArtVkPreis_0 = Round((ArtZeit_0 * 1.295)/ 0.85,2)
where ArtZusinfo4 = 'K000103' and ArtZeit_0 between 100.01 and 500.00;

update sArtikel set ArtVkPreis_0 = Round((ArtZeit_0 * 1.252)/ 0.85,2)
where ArtZusinfo4 = 'K000103' and ArtZeit_0 >500.00;

Wobei ArtZeit_0 dem EKPreis entspricht und ArtVKPreis_0 dem neuen VK-Preis.
Ich frage mich ob man das nicht einfacher und kürzer lösen kann.
Am besten wäre so in der Richtung: EK Spanne von [0.00 bis 1000.00] setze den Multiplikator von [2.00 bis 1.05]
also wäre das bei einem EK von 500 EUR der VK 737,50 (Multiplikator 1.475)

Ich habe an so etwas wie array gedacht, Access scheint aber nicht damit umgehen zu können.
Hat jemand vielleich eine Idee wie man das besser lösen kann, also dynamisch ausgehend vom EK den Multiplikator für VK setzen??

LG Harry
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: MSAccess SQL Update Statement verkürzen?

  Alt 25. Mai 2021, 12:12
SQL-Parameter sollten helfen.
Markus Kinzler
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#3

AW: MSAccess SQL Update Statement verkürzen?

  Alt 25. Mai 2021, 12:17
Mit einem "Case When" für den Multiplikator, wenn Access das kann?

SQL-Code:
update sArtikel set ArtVkPreis_0 = Round((ArtZeit_0 *
  Case when ArtZeit_0 between 0.01 and 5.00 then 1.620
       when ArtZeit_0 between 5.01 and 10.00 then 1.39
       ...
       else 1.252
  end)/ 0.85,2)
where ArtZusinfo4 = 'K000103'
Ralph
  Mit Zitat antworten Zitat
markus888

Registriert seit: 23. Dez 2018
46 Beiträge
 
#4

AW: MSAccess SQL Update Statement verkürzen?

  Alt 25. Mai 2021, 14:37
Die Switch Funktion wäre eine Möglichkeit.

https://support.microsoft.com/de-de/...3-f47504f9e379
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
134 Beiträge
 
Delphi 12 Athens
 
#5

AW: MSAccess SQL Update Statement verkürzen?

  Alt 25. Mai 2021, 15:01
@jumpy
Gute Idee, danke. Funktioniert aber unter Access nicht, was mich aber auf die Funktion switch gebracht hat.

@marcus
Ja, danke mit switch kann ich den code etwas reduzieren

Vielleicht hat noch jemand eine Idee wie man folgendes umsetzt:

EK Spanne von [0.00 bis 1000.00] setze den Multiplikator von [2.00 bis 1.05]
also wäre das bei einem EK von 500 EUR der VK 737,50 (Multiplikator 1.475) Je höher der EK desto niedriger der Preisaufschlag.

Wie kann man da eine Automatik per SQL code einbauen???

LG Harry
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#6

AW: MSAccess SQL Update Statement verkürzen?

  Alt 25. Mai 2021, 15:23
Zeig' doch bitte mal Dein derzeitiges Statement (wenn's mehrere sind, dann eben mehrere).

Ohne ist es eher schwierig festzustellen, was geändert werden könnte / müsste, um Deinen Wünschen zu entsprechen.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: MSAccess SQL Update Statement verkürzen?

  Alt 25. Mai 2021, 17:54
Also am einfachsten wäre, Deine Faktoren ergeben eine Formel. Dann ist es nur ein Statement.

Datenbank Style, halbwegs elegant und stark adaptierbar (Rabatt, Saison, ..) wäre ganz schlicht eine zusätzliche Tabelle die Preisspannen und Faktor aufführt. Dann ist es auch wieder nur ein Update Statement. Ggf. muss man hier beachten, dass es auch nach Änderungen später langfristig nachvollziehbar bleibt (Also nur inserts mit Zeiger für aktive Elemente, Gültigkeitsdauer usw., wenn man das auf die Spitze treibt kann man redaktionell für beliebige Zeiträume Preisanpassungen vornehmen, während man selbst auf den Bahamas Drinks schlürft. Wenn man alles richtig eingestellt hat, gibt's auch daheim keine böse Überraschung)
Gruß, Jo
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
134 Beiträge
 
Delphi 12 Athens
 
#8

AW: MSAccess SQL Update Statement verkürzen?

  Alt 26. Mai 2021, 17:04
@jobo
Danke für Deinen Vorschlag mit der zusätzlichen Tabelle. In der Richtung habe ich noch gar nicht gedacht.
Die Idee mit den Bahamas gefällt mir natürlich außerordentlich gut

LG Harry
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
134 Beiträge
 
Delphi 12 Athens
 
#9

AW: MSAccess SQL Update Statement verkürzen?

  Alt 26. Mai 2021, 19:27
EINE Frage hätte ich noch:
Ich möchte aus einer Lieferanten Tabelle den günstigsten EK Preis für einen Artikel auswählen und diesen als EKPreis in der Artikel Tabelle speichern, also updaten.
Den günstigen Lieferantenpreis auszuwählen hab ich schon:

SELECT Min(A.ArtLiefEKPreis) As Preis
From ArtLief As A
Group By A.ArtLiefArtNr;

Wie aber kann ich aber ein Update des EKpreis der Artikeltabelle machen? Funktioniert das mit join und Access?
Hat jemand einen Lösungsvorschlag? Das wäre toll.

LG Harry
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.536 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: MSAccess SQL Update Statement verkürzen?

  Alt 26. Mai 2021, 20:16
Du hast eine Artikeltabelle, eine Lieferantentabelle und eine Zuordnungstabelle zwischen Artikeln und Lieferanten, habe ich das richtig verstanden? Wozu dann den Preis noch redundant in der Artikeltabelle speichern?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz