Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi PosNummern in Rechnungsdaten (https://www.delphipraxis.net/75758-posnummern-rechnungsdaten.html)

LOMBI 24. Aug 2006 15:34

Datenbank: Paradox • Zugriff über: TQuery, TDataSource

PosNummern in Rechnungsdaten
 
Tabelle: Rechnungsdaten
Feld: PosNr (n)umerisch


Hallo,

die Rechnungsdaten (Artikel) werden in einem DBGrid angezeigt. Jeder Artikel erhält eine fortlaufende PosNr

1.0 Artikel1
2.0 Artikel2
3.0 Artikel3
...

Delphi-Quellcode:
TFRechnungen.QueryRechnungsdatenAfterInsert(DataSet. TDataSet);                    
begin            //PosNr hochzählen
  with DataSet do
    if QueryRechnungsdaten.FieldByName('PosNr').IsNull then
      QueryRechnungsdaten.FieldByName('PosNr').AsInteger :=
      NextKey('PosNr', 'Rechnungsdaten');
    end;
Problem:

Mit dem ersten Artikel in einer neuen Rechnung muß die PosNr wieder bei 1.0 starten.

Wie bitte erreiche ich das?

Gruß
Lombi

mkinzler 24. Aug 2006 15:39

Re: PosNummern in Rechnungsdaten
 
Was steckt hinter NextKey?
Ggf mußt du diese Funktion anpassen.

LOMBI 24. Aug 2006 16:39

Re: PosNummern in Rechnungsdaten
 
Delphi-Quellcode:
function NextKey (fldName, tblName: String): Integer;
begin
  with TQuery.Create do
  begin
  DatabaseName := QueryRechnungen.DatabaseName;
  SQL.Text := Format('SELECT MAX(%s) FROM %s', [fldName, tblName]);
  Open;
  Result: succ(Fields[0].AsInteger);
  Close;
end;
Gruß
Lombi

mkinzler 24. Aug 2006 17:29

Re: PosNummern in Rechnungsdaten
 
SQL-Code:
SELECT MAX(PosNr) FROM RechPos where RechPos.RechNr = RechNr;

LOMBI 24. Aug 2006 19:18

Re: PosNummern in Rechnungsdaten
 
Hallo mkinzler,

danke für den Code, aber damit erhalte ich leider keine Veränderung.
Die PosNr wird in einer neuen Rechnung einfach weiter hochgezählt und
fängt nicht wieder bei PosNr. 1.0 für den ersten angelegten Artikel an.
Grüße
Lombi

mkinzler 24. Aug 2006 19:22

Re: PosNummern in Rechnungsdaten
 
Zitat:

Die PosNr wird in einer neuen Rechnung einfach weiter hochgezählt
Das dürfte aber nicht sein. Bei einer neuen Rechnungsnummer müßte die Abfrage NULL zurückliefern, da ja keine Datensätze da sind, über die er eine Summierung durchführen könnte.

Poste mal dei Metadaten der Tabelle.

LOMBI 24. Aug 2006 19:46

Re: PosNummern in Rechnungsdaten
 
Rechnungsdaten-Tabelle:

RechnungsNr I(nteger)
PosNr N(umerisch)
ArtNr A(lphanumerisch)
ArtBez A(lphanumerisch)
ArtBez2 A(lphanumerisch)
Datum D(ate)
Anzahl N(umerisch)
EinzelPreis N(umerisch)
GesamtPreis N(umerisch)
MwSt N(umerisch)
Rabatt N(umerisch)

QueryRechnungsdaten
DataSource: DataSourceRechnungen
SQL.Text : SELECT * FROM Rechnungen WHERE RechnungsNr= :RechnungsNr;

mkinzler 24. Aug 2006 19:49

Re: PosNummern in Rechnungsdaten
 
Setze mal für RechnungsNr eine nicht vorhandene ein. Was bekommst du als Ergebnis der Max()-Funktion?

LOMBI 24. Aug 2006 20:08

Re: PosNummern in Rechnungsdaten
 
Ungültiger Feldname.

Ich habe zusätzlich eine Query auf die Form gelegt:

Name: QueryPosNr
DataSource: DataSourceRechnungsdaten
SQL.Text: SELECT MAX(PosNr)
FROM Rechnungsdaten
WHERE Rechnungsdaten.RechnungsNr = RechnungsNr;

mkinzler 24. Aug 2006 20:14

Re: PosNummern in Rechnungsdaten
 
SQL-Code:
SELECT MAX(PosNr)
FROM Rechnungsdaten
WHERE Rechnungsdaten.RechnungsNr = 999999;


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 Uhr.
Seite 1 von 3  1 23      

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