Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Letzte Rechnungsnummer um 1 hochzählen (https://www.delphipraxis.net/74353-letzte-rechnungsnummer-um-1-hochzaehlen.html)

LOMBI 2. Aug 2006 13:51

Re: Letzte Rechnungsnummer um 1 hochzählen
 
Hallo
und herzlichen Dank für das gezeigte Interesse!

@ marabu

Delphi-Quellcode:
DatabaseName := Global.DatabaseName;
Hier erhalte ich die Meldung: Undefinierter Bezeichner 'Global'.
D3-Problem?

Gruß
Lombi

gmc616 2. Aug 2006 14:42

Re: Letzte Rechnungsnummer um 1 hochzählen
 
Hi,

ohne mich mit Paradox auszukennen:

Ich nehme an marabu meint mit Global das TConnection-Objekt, welches die Verbindung zur Datenbank herstellt.

Edit:

sowas wie QueryRechnungenin deinem Fall. :zwinker:

LOMBI 2. Aug 2006 16:22

Re: Letzte Rechnungsnummer um 1 hochzählen
 
Brauche ich denn überhaupt die QueryRNr oder genügt bereits
QueryRechnungen?

Gruß
Lombi

marabu 2. Aug 2006 16:29

Re: Letzte Rechnungsnummer um 1 hochzählen
 
Hallo.

Global.DatabaseName soll eine String-Konstante sein:

Delphi-Quellcode:
unit Global;

interface

const
  DatabaseName = 'DBDEMOS';

implementation

end;
Ich wusste nicht wie die Datenbank heißt ...

marabu

LOMBI 2. Aug 2006 17:49

Re: Letzte Rechnungsnummer um 1 hochzählen
 
Hallo marabu,

Delphi-Quellcode:
unit Rechnungen;

interface
.
.
.
const
DatabaseName = ...

implementation
.
.
.
uses Kunden, KundenListe;

function NextKey(tblName, fldName: String): Integer;
begin
  with TQuery.Create(nil) do
  begin
  DatabaseName := Rechnungen.DatabaseName;
  ...
Meldung: Tabelle nicht vorhanden.
Ich habe doch die Rechnungen.DatabaseName angegeben?

Lombi

mschaefer 2. Aug 2006 20:35

Re: Letzte Rechnungsnummer um 1 hochzählen
 
Bei Paradox ist Databasename die vorgeschaltete Tdatabase-Komponente.
In der Databasekomponente ist Database der der Pfad zum Datenbankverzeichnis (z.B.: 'c:\Daten\Datebank')

Grüße in die Runde // Martin

Catbytes 3. Aug 2006 09:15

Re: Letzte Rechnungsnummer um 1 hochzählen
 
Hallo,

Du kannst auch mit Nummernkreisen arbeiten.

Rechnungen = 200000 - 299999
Lieferscheine = 300000 - 399999

In einer Tabelle speicherst Du dann die Nummernkreise ab und dazu immer den letzten Wert je Belegart. Die Belegarten kannst Du auch über ein Kürzel trennen, dann kannste alles mehr oder weniger in 3 oder 4 Tabellen unterbringen, wie z.B.:

VKBelege = Belegkopf mit Anschrift, Belegart etc.
VKBelegePositionen = die einzelnen Positionen, Menge, Preis etc.
Nummernkreise = die Nummernkreise der Belegarten
Belegarten = die verschiedenen Belegarten

Wenn Du jetzt noch das Belegjahr mit dazunimmst, kannst Du die Nummernkreise auch klein halten, weil es jedes Jahr wieder von vorne beginnt. Der DB-Key muß dann natürlich über mehrere Felder eindeutig sein (Belegjahr, Belegnummer, Belegart).

Die Belegnummer setzt sich dann wie folgt zusammen: Belegjahr-Belegnummer, also z.B. 2006-123456

So sind auch abweichende Fiskaljahre finanztechnisch abgedeckt und Du weißt schon anhand der Belegnummer in welchem Zeitraum der Beleg war.

Das gleiche kannst Du auch für den Einkauf machen mit Bestellungen, Wareneingang etc. Anstatt VKBelege nennst Du die dann einfach EKBelege nach gleichem Schema.

LOMBI 4. Aug 2006 10:20

Re: Letzte Rechnungsnummer um 1 hochzählen
 
Hallo,

@marabu

Zitat:

function NextKey(tblName, fldName: String): Integer;
...
end;

procedure TFormRechnungen.QueryRechnungenBeforeInsert(DataSe t: TDataSet);
begin
DataSet.FieldByName('RNR').AsInteger := NextKey('RNR', 'Rechnungen');
end;
Entschuldigung, ich hatte mich nach NextKey in der function gerichtet
und im BeforeInsert irrtümlich NextKey('Rechnungen', 'RNr') geschrieben. Deshalb wurde zunächst die Tabelle nicht gefunden.

Schon kämpfe ich mit einem neuen Problem:

'Datenmenge weder im Editier- noch im Einfügemodus'
Delphi-Quellcode:
TFRechnungenListe.BtnNeuClick(Sender: TObject);
begin
  with FRechnungen do
    begin
      Show;
      QueryRechnungen.Append; //Einfügemodus
      QueryRechnungen.FieldByName('RNr').AsInteger :=
      StrToInt(EditRNr.Text);
      ...
      end;
In QueryRechnungen.SQL(TStrings) steht: SELECT * FROM Rechnungen

Wer hilft mir bitte?

Gruß
Lombi

marabu 4. Aug 2006 11:37

Re: Letzte Rechnungsnummer um 1 hochzählen
 
Hallo Lombi,

an deinen gezeigten Code-Zeilen kann es eigentlich nicht liegen, dass die Datenmenge sich nicht im Editiermodus befindet.

Nur am Rande - wenn die Methode BtnNeuClick() ausgelöst wird, dann ist doch deine Form FRechnungen bereits sichtbar, wieso versuchst du sie dann noch mit Show() zu zeigen? Auch solltest du in einer Methode der Form nicht auf die Formvariable Bezug nehmen:

Delphi-Quellcode:
TFRechnungenListe.BtnNeuClick(Sender: TObject);
begin
  with QueryRechnungen do
  begin
    Append; //Einfügemodus
    FieldByName('RNr').AsInteger := StrToInt(EditRNr.Text);
    // ...
  end;
end;
Grüße vom marabu

LOMBI 4. Aug 2006 16:10

Re: Letzte Rechnungsnummer um 1 hochzählen
 
Hallo marabu,

Delphi-Quellcode:
Result := Succ(Fields[0].AsInteger);
Trotz "Succ" wird RNr.Text immer mit dem gleichen Wert gespeichert und nichts hochgezählt. Woran bitte könnte das liegen?

Lombi


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:38 Uhr.
Seite 2 von 3     12 3      

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