![]() |
Datenbank: ADS • Version: 9.10 • Zugriff über: ADO
nächste Auftragsnummer ermitteln?
Hallo allerseits,
ich möchte mit Delphi eine Schnittstelle zu einem Clipper/xBase-Programm schreiben. Diese Schnittstelle soll neue Aufträge zu den bestehenden Aufträgen erzeugen. Beim Erzeugen einer neuen Auftragsnummer komme ich in einen Konflikt mit dem bisherigen Auftragsprogramm. Das Alt-Programm hat eine eigene Tabelle, in der die nächste zur Verfügung stehende Auftragsnummer gespeichert ist. Wenn das Alt-Programm einen neuen Auftrag schreibt, so sperrt es diesen Datensatz, liest das Feld 'Auftragsnummer', erhöht den Wert für Auftragsnr um +1, speichert den Datensatz und gibt ihn wieder frei. Wie kann ich dies aber mit SQL abbilden, wenn ich vermeiden will, dass parallel das Alt-Programm auf diese Daten schreibt? Dies sind zwei Arbeitsschritte, in denen das Alt-Programm genau dazwischen funken kann.
SQL-Code:
Hat jemand eine Idee?
Select [auftragsnr] From Basis_Tabelle
// und // Update Basis_Tabelle Set [auftragsnr] = [auftragsnr] + 1 Gruß, Peter |
Re: nächste Auftragsnummer ermitteln?
Es könnte helfen, wenn du die beiden Queries in eine Transaction packst :gruebel:
|
Re: nächste Auftragsnummer ermitteln?
Hallo,
das Clipper/XBase benutzt ja wohl eine DBF-Tabelle (grusel ;) ). So schlimm es ist, nimm den gleichen Algorithmus wie das Alt-Programm. Table: TTable (oder TDBFTable, du schreibst nichts über Zugriff auf das Alt-Programm)
Delphi-Quellcode:
with Table do
begin // Datensatz suchen SetKey; FieldByName('XX').AsInteger:= xx; if GotoKey then begin try Edit; // hier wird auf Satzebene im Dateisystem gesperrt iNextNo:= FieldByName('NextNo').AsInteger; FieldByName('NextNo').AsInteger:= iNextNo+1; Post; // Speichern FlushBuffers(Handle); // "richtig" speichern except // Sperrung fehlgeschlagen Exit; end; end; Heiko |
Re: nächste Auftragsnummer ermitteln?
@hoika
Auf die Idee hätte ich auch kommen können... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:12 Uhr. |
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