AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi [IB/FB] Wo und wie in DB gültige Konstante setzen ?

[IB/FB] Wo und wie in DB gültige Konstante setzen ?

Ein Thema von Hansa · begonnen am 3. Aug 2006 · letzter Beitrag vom 4. Aug 2006
Antwort Antwort
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

[IB/FB] Wo und wie in DB gültige Konstante setzen ?

  Alt 3. Aug 2006, 20:46
Datenbank: FB • Version: 2.0 • Zugriff über: FIBplus
Hi,

an einigen Stellen brauche ich Konstanten, die DB-relevant sind. Es genügt also nicht, die nur im Programm zu setzen/auszulesen. Die DB muß sie eventuell in einer SP usw. verwenden. Sie muß also davon Kenntnis haben. Praktikabel wäre z.B. eine INI, die die Konstanten enthält. Ändere ich einen Wert, dann gilt ab dann eben der. Aber wie kann die DB diese lesen und verarbeiten ? Any Ideas ? UDF nötig oder gehts einfacher ?
Gruß
Hansa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: [IB/FB] Wo und wie in DB gültige Konstante setzen ?

  Alt 3. Aug 2006, 20:48
Du könntest diese auch in der datenbank selber ablegen. Z.B. in einer Systabelle oder einem Generator
Markus Kinzler
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.364 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: [IB/FB] Wo und wie in DB gültige Konstante setzen ?

  Alt 3. Aug 2006, 21:43
Hi Hansa,

zu was ne INI nehmen wenn Du ne Datenbank hast? Du kannst doch beliebige Tabellen erstellen mit beliebigen Attributen....
Das über ne UDF zu lösen wäre mir zu heiß: Ein Zugriff auf eine (INI-)Datei und das auch noch mehrfach auf dem Server....???? Schreib Dein Zeug in eine oder mehrere Tabellen und gut ist....

Lemmy
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: [IB/FB] Wo und wie in DB gültige Konstante setzen ?

  Alt 3. Aug 2006, 22:14
Ja klar, aber die Werte werden oft gebraucht. Ich will ja vermeiden, dauernd etwas, was nicht geändert wird, neu zu lesen und das womöglich noch zu verwursteln, äh verjoinen.

Z.B. brauche ich 99 Haupt-Warengruppen. Einem reicht das nicht und er will 999. Gut lege den Wert eben in Tabelle. Dieselbe Tabelle enthält jetzt noch 5 stellige Gruppen, als Feingliederung, sagen wir als Untergruppe. Es besteht also ein Unterschied bezüglich der Nummern. Überschneiden dürfen die sich nicht ! Jetzt will einer eine Liste aller Artikel seiner Hauptgruppen.

ich mache hierzu folgendes : SELECT * FROM ART JOIN WG ON (blabla) WHERE NR <= 99 Wegen der 99 müßte dann noch ein JOIN da rein, obwohl der Wert klar ist. Es könnte aber auch 999 sein. Die "Systemtabelle" ist eigentlich überflüssig, sofern der Wert aus einer INI kommt. Soweit meine Überlegungen. Wie mkinzler vorschlägt, einen Generator dazu zu mißbrauchen, das könnte vielleicht gehen. Ich will halt nicht überall extra einen konstanten Wert aus einer Tabelle lesen und eben statt 2 Tabellen 3 benutzen müssen. Bleibt die eigene "Systemtabelle" außen vor, dann gehts programmseitig auch nur mit Parametern, die immer denselben Wert haben. Dann schleppe ich die eben unnötig mit und bin auch nicht weiter.
Gruß
Hansa
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.874 Beiträge
 
Delphi 12 Athens
 
#5

Re: [IB/FB] Wo und wie in DB gültige Konstante setzen ?

  Alt 4. Aug 2006, 00:19
Hallo Hansa!

Wenn ich mich recht erinnere, unterstützt der Firebird ab der Version 2.0 DB-weite Variablen. Müßtest Du mal bei firebirdsql.org nachlesen.

Für Integerwerte würde ich einen Generator mißbrauchen (wenn globale Variable noch nicht unterstützt), da dieser nicht von Transaktionen abhängig ist. Eine Änderung des Generators ist sofort für jeden in jeder noch offenen oder auch neu geöffneten Transsaktion sichtbar.

Gruß

onlinekater
Thomas Breitkreuz
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6

Re: [IB/FB] Wo und wie in DB gültige Konstante setzen ?

  Alt 4. Aug 2006, 00:31
FB 2.0 ist genau das, was ich jetzt gerade lese. Habe letzte Woche umgestellt. Da war doch was.

Jup, es sind die Kontext-Variablen und dadurch kommen UDF ins Spiel. Dies bedeutet Arbeit, aber jetzt nicht mehr. 8) Wer weiß, was genau zu tun ist solls einfach sagen.
Gruß
Hansa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: [IB/FB] Wo und wie in DB gültige Konstante setzen ?

  Alt 4. Aug 2006, 06:48
Was haben Kontextvariablen mit UDF zu tun?

Ab FB2.0 kann man benutzerdefinierte Kontextvariablen für die verschiedene Gültigkeitsdauern angeben ( Sitzung, Transaktion.
Die Variablen können mit der Funktionen RDB$SET_CONTEXT und RDB$GET_CONTEXT gesetzt und wieder ausgelesen werden.
RDB$SET_CONTEXT ( '<Namensraum'>, '<contextvar>'); Die möglichen Namensräume wären SYSTEM, USER_SESSION, USER_TRANSAKTION.
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: [IB/FB] Wo und wie in DB gültige Konstante setzen ?

  Alt 4. Aug 2006, 08:34
Hallo,

ich denke, du gehst falsch an die Sache ran.
Ob du 99 oder 999 Warengruppen hast, ist doch Wurscht
Definiere eine Tabelle Warengruppe

ID Integer
Number Integer
Name String

ID ist der künstliche Primärschlüssel.

Und dann lass den Anwender doch seine 99 oder 9999 oder 99999
Warengruppen eintragen.
Du könntest natürlich in der Datenbank über Trigger
verhindern, dass mehr als 99 oder 999 Warengruppen eingetragen werden können.

Willst du das ?


Heiko
Heiko
  Mit Zitat antworten Zitat
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 23:19 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