Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Tabelle auf einen Datensatz begrenzen (https://www.delphipraxis.net/93634-tabelle-auf-einen-datensatz-begrenzen.html)

sngt 8. Jun 2007 15:44

Datenbank: Paradox • Version: 7 • Zugriff über: TTable

Tabelle auf einen Datensatz begrenzen
 
wie funktioniert das?

mfg sngt

joachimd 8. Jun 2007 15:47

Re: Tabelle auf einen Datensatz begrenzen
 
Zitat:

Zitat von sngt
wie funktioniert das?

mfg sngt

gar nicht. Du kannst zwar etwas in Deine App einbauen, aber das kann leicht umgangen werden. Am Besten, Du nimmst etwas anderes als Paradox. Jede einigermaßen vernünftige DB kann so etwas über einen INSTEAD OF INSERT Trigger lösen.

MrSpock 8. Jun 2007 15:55

Re: Tabelle auf einen Datensatz begrenzen
 
Hallo sngt,

grundsätzlich kann das wie Joachim schon gesagt hat, nur über deine Anwendung selbst programmiert werden. Man benutzt aber je gerade Tabellen, weil man viele gleichartige Daten speichern möchte. Vielleicht kannst du noch erklären, warum du eine Tabelle auf einen Datensatz begrenzen möchtest, möglicherweise gibt es ja andere Ansätze, die auch zum Ziel führen.

LOMBI 8. Jun 2007 17:12

Re: Tabelle auf einen Datensatz begrenzen
 
Hallo,

mich interessiert dieses Thema ebenfalls.

Ich würde gerne erreichen, dass ein
Benutzer nur drei Steuersätze in einer
Tabelle festlegen kann.

Gruß
Lombi

MrSpock 8. Jun 2007 17:29

Re: Tabelle auf einen Datensatz begrenzen
 
Hallo Lombi,

du kannst entweder über
SQL-Code:
SELECT count(*) FROM steuern
oder einfach über die Eigenschaft RecordCount des TTable Objektes die Anzahl der Datensätze in der Tabelle ermitteln. Beim Versuch einen weiteren Datensatz hinzuzufügen, gibst du dann eine Fehlermeldung aus und brichst den Vorgang ab.

LOMBI 8. Jun 2007 17:33

Re: Tabelle auf einen Datensatz begrenzen
 
Hallo MrSpock,

alles klar, vielen Dank!

marabu 8. Jun 2007 19:15

Re: Tabelle auf einen Datensatz begrenzen
 
Hallo Lombi,

dein technisches Problem hat der Vulkanier ja gelöst, aber ich gebe zu Bedenken, dass eine Tabelle mit Steuersätzen in der Regel mehr als einen Datensatz (Historie) aufweisen wird, da mitunter in einem Geschäftsjahr der Steuersatz mehr als einmal angepasst werden kann und da auch kurz nach der Änderung des Steuersatzes automatisierte Rückberechnungen möglich sein müssen, die Zugriff auf den alten Steuersatz benötigen. Ich würde sogar für jeden Steuersatz (ohne Berechnung, halber Satz, voller Satz, ...) einen eigenen Eintrag in der Tabelle vornehmen.

Freundliche Grüße

DeddyH 8. Jun 2007 20:54

Re: Tabelle auf einen Datensatz begrenzen
 
Hi Marabu, versteh ich Dich richtig? Eine Tabelle mit den Steuersatzarten, z.B. (Daten)

1 - ohne Steuer
2 - geminderte Steuer
3 - voller Steuersatz

und eine zweite Tabelle mit den Steuersätzen (Felder)

- Steuersatzart: FK auf o.a. Tabelle
- Wert in Prozent
- gültig von
- gültig bis

So würde ich es nämlich machen. Da können (je nach Regelungswut der jeweiligen Regierung und Einsatzdauer der DB) u.U. eine Menge Datensätze zusammenkommen.

marabu 8. Jun 2007 21:03

Re: Tabelle auf einen Datensatz begrenzen
 
Hallo DeddyH,

ich glaube schon, dass du mich richtig verstanden hast. Deine erste Tabelle stellt in einem normalisierten Teildatenmodell die Literale der Steuersätze zur Verfügung - falls man die mal irgendwo im Klartext anzeigen möchte. Die zweite Tabelle entspricht der von mir erwähnten Historie. Die enthält bei mir allerdings kein BIS-DATUM, da die gesetzlichen Regelungen sich als nach oben offene Zeitintervalle modellieren lassen. Der Gesetzgeber nennt bei der Anhebung eines MWSt-Satzes meistens kein Datum für die nächste Erhöhung.

Freundliche Grüße

DeddyH 8. Jun 2007 21:10

Re: Tabelle auf einen Datensatz begrenzen
 
Ja stimmt, das Feld "gültig bis" war dafür gedacht, bei Einfügen eines Datensatzes neueren Datums einen Trigger zu feuern, der das Enddatum auf den letzten Tag vor Inkrafttreten des neuen Satzes setzt (div. Plausibilitätsprüfungen im Trigger selbst natürlich vorausgesetzt), damit man später recht einfach mit BETWEEN arbeiten kann, ohne evtl. Subqueries mit Aggregatfunktionen bemühen zu müssen :zwinker: . Aber da ich so etwas noch nie praktisch umgesetzt habe, sind das natürlich rein theoretische Überlegungen meinerseits.

DeddyH 8. Jun 2007 21:23

Re: Tabelle auf einen Datensatz begrenzen
 
Obwohl diese Überlegung eigentlich Quatsch ist. Man könnte sich ja auch zur Vereinfachung eine recht simple SP schreiben, die den Steuersatz an einem gegebenen Datum ermittelt. Mal in Pseudo-SQL:
SQL-Code:
SELECT MAX('gültig seit') FROM Tabelle WHERE 'gültig seit' < :Datum
OK, war eben ein Schuss aus der Hüfte :roll: :lol:

marabu 8. Jun 2007 21:40

Re: Tabelle auf einen Datensatz begrenzen
 
Hallo DeddyH,

im Prinzip sieht das im wirklichen Leben genau so aus, nur muss der Vergleich auf LESS-OR-EQUAL prüfen, statt der Aggregatfunktion würde man TOP, LIMIT oder FIRST mit entsprechender Sortierung verwenden - und wahrscheinlich möchte man auch den Prozentsatz zu einem bestimmten Steuersatz erfahren.

Grüße aus Eriwan

DeddyH 8. Jun 2007 21:47

Re: Tabelle auf einen Datensatz begrenzen
 
Das Gleichheitszeichen fehlte, stimmt (meine Tastatur klemmt ab und an, kein Scherz).
Zitat:

Zitat von marabu
statt der Aggregatfunktion würde man TOP, LIMIT oder FIRST mit entsprechender Sortierung verwenden

Das interessiert mich nun doch, ist diese Vorgehensweise denn performanter als eine Aggregatfunktion?

P.S.: Das SQL galt ja nur für eine ersponnene Stored Procedure, daher konnte es keinen Prozentsatz zurückgeben.

mkinzler 8. Jun 2007 21:53

Re: Tabelle auf einen Datensatz begrenzen
 
Zitat:

Das interessiert mich nun doch, ist diese Vorgehensweise denn performanter als eine Aggregatfunktion?
Ja, da ja nichts berechnet wird.

DeddyH 8. Jun 2007 21:55

Re: Tabelle auf einen Datensatz begrenzen
 
Danke, das klingt absolut logisch. :thumb:

LOMBI 9. Jun 2007 12:06

Re: Tabelle auf einen Datensatz begrenzen
 
Hallo,

für meine kleine Anwendung könnte ich die verwendeten Steuersätze und Beträge in
der Tabelle "Artpos. aus Rechnungen" speichern. Die Artikelumsätze würde ich in
jedem Falle netto ohne Steuer im ArtikelDlg verbuchen.

Gruß
Lombi


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:37 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-2025 by Thomas Breitkreuz