AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi UNIQUE KEY auf RechnungsNr setzen
Thema durchsuchen
Ansicht
Themen-Optionen

UNIQUE KEY auf RechnungsNr setzen

Ein Thema von LOMBI · begonnen am 8. Aug 2006 · letzter Beitrag vom 8. Aug 2006
Antwort Antwort
LOMBI
(Gast)

n/a Beiträge
 
#1

UNIQUE KEY auf RechnungsNr setzen

  Alt 8. Aug 2006, 18:25
Datenbank: Paradox • Version: 7 • Zugriff über: TQuery, TDataSource
Hi,

ich möchte auf die fortlaufende Rechnungsnummer einen unique Key setzen, damit jede Nummer zuverlässig nur einmal gespeichert wird.

Ist meine Vorgehensweise so i.O.?

1.) In der Datenbankoberfläche setze ich auf die RechnungsNr einen
Sekundärindex.

2.)
Delphi-Quellcode:
    procedure TFormRechnungen.QueryRechnungenBeforePost(DataSet:
    TDataSet); //Rechnungsnummer prüfen
    begin
      if QueryRNr.Fields[0].AsInteger > 0 then
       DataSet.FieldByName('RNr').AsInteger := NextKey('RNr',
       'Rechnungen');
    end;
Besten Dank für die Hilfe!

Gruß
Lombi
  Mit Zitat antworten Zitat
Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#2

Re: UNIQUE KEY auf RechnungsNr setzen

  Alt 8. Aug 2006, 18:28
Also entweder lässt du den Parameter "DataSet" weg und greift direkt darauf zu, so wie du es ja auch mit QueryRNr machst oder aber du musst noch ein "var" davor setzen:

Delphi-Quellcode:
procedure TFormRechnungen.QueryRechnungenBeforePost(var DataSet:
    TDataSet);
Sascha
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: UNIQUE KEY auf RechnungsNr setzen

  Alt 8. Aug 2006, 19:12
Hallo Sascha,

die Signatur des event handlers ist vorgegeben und kann nicht verändert werden - ist auch nicht nötig.

Delphi-Quellcode:
procedure TFormRechnungen.QueryRechnungenBeforePost(DataSet: TDataSet);
begin
  with DataSet do
    FieldByName('RNR').IsNull then
       FieldByName('RNR').AsInteger := NextKey('RNr', 'Rechnungen');
end;
Die Speicherung doppelter Schlüssel verhindert der Sekundärindex, wenn bei "Eindeutig" ein Haken gesetzt wurde. Im Programm muss allerdings bei jedem missglückten Speicherversuch aufgrund doppelten Schlüssels ein neuer Schlüssel besorgt werden. Dazu würde ich in einer Ausnahmebehandlung den Ausnahmegrund entsprechend einschränken, damit nicht in jedem Fehlerfall ein doppelter Schlüssel unterstellt wird und das Programm in einer Endlosschleife läuft.

Grüße vom marabu
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:47 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