Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Nummernkreise (https://www.delphipraxis.net/74848-nummernkreise.html)

LOMBI 9. Aug 2006 15:20

Datenbank: Paradox • Version: 7 • Zugriff über: TQuery, TDataSource

Nummernkreise
 
Hi,

auf der Form Einstellungen möchte ich die Anfangswerte für BelegNummern
eingeben und den jeweiligen Edits auf den Forms zuweisen.

Delphi-Quellcode:
procedure TFEinstellungen.EditRNr.Change(Sender: TObject);
begin            //Anfangswert für Rechnungen
  FRechnungen.QueryRechnungen.FieldByName('RNr').asInteger:=
  StartKey('RNr', 'Einstellungen');
end;
Mit diesem Code hat es leider nicht geklappt.
Wer kann mir bitte in dieser Sache weiterhelfen?

Gruß
Lombi

hoika 9. Aug 2006 15:34

Re: Nummernkreise
 
Hallo Lombi,

ich würde erstens kein DB-Code direkt in Forms ausführen.
Das macht den Code unübersichtlich und schwer portierbar.
Weil du ja demnächst weg von Paradox musst ;)

Der Code ist ansonsten viel zu wenig, um einen Fehler zu finden.
Aber naja.

Bsp.-Code mit einer anderen Query
Ich gehe mal davon aus, dass
die Tabelle "Einstellungen" nur einen Record haben soll das Feld "RNr" heisst.

Delphi-Quellcode:
procedure SetNo(const theNumber: Integer);
var
  bExists: Boolean;
begin
  with Query do
  begin
   // Anzahl der Records prüfen
    SQL.Clear;
    SQL.Add('Select Count(*) From Einstellungen');
    Open;
    try
      bExists:= Fields[0].AsInteger>0;
    finally
      Close;
    end;

   // update oder insert
    SQL.Clear;
    if bExists then
    begin
      SQL.Add('Update Einstellungen Set RNr=:RNr');
    end
    else
    begin
      SQL.Add('Insert Into Einstellungen(RNr) Values(:RNr)');
    end;
    ParamByName('RNr').AsInteger:= theNumber;

    ExecSQL;
  end;
end;

Heiko

omata 9. Aug 2006 15:49

Re: Nummernkreise
 
Hallo hoika,

wenn man jetzt noch das Add weglässt, wird es noch übersichtlicher... (dann ist auch der Umstieg auf andere Komponenten leichter, dort ist man nämlich wieder von TStrings weggegangen)

Delphi-Quellcode:
procedure SetNo(const theNumber: Integer);
var
  bExists: Boolean;
begin
  // Anzahl der Records prüfen
  Query.SQL.Text:=
    'SELECT COUNT(*)'#13 +
    'FROM Einstellungen';
  Query.Open;
  try
    bExists:= (Query.Fields[0].AsInteger > 0);
  finally
    Query.Close;
  end;

  // update oder insert
  if bExists then
    Query.SQL.Text:=
      'UPDATE Einstellungen'#13 +
      'SET RNr = :RNr'
  else
    Query.SQL.Text:=
      'INSERT INTO Einstellungen(RNr)'#13 +
      'VALUES(:RNr)';

  Query.ParamByName('RNr').AsInteger:= theNumber;

  Query.ExecSQL;
end;
Gruss
Thorsten

LOMBI 10. Aug 2006 14:51

Re: Nummernkreise
 
Hallo Heiko + Thorsten,

danke für Eure Nachricht. Ich habe mir das so vorgestellt, dass ich auf die FormEinstellungen alle Anfangswerte für die Belege setze:

z.B.:
Lieferscheine ab Nr.: (TEditLSNr)
Rechnungen ab Nr : (TEditRNr)
...

Dazu habe ich in der Datenbankoberfläche die TabelleEinstellungen ange-
legt:

Bezeichnung A(lphaNumerisch) z.B.: RechnungsNr..
Anfangswert I(nteger)

Wäre das denn so in Ordnung?

Gruß
Lombi


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 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