Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Merken von Daten (https://www.delphipraxis.net/62360-merken-von-daten.html)

K-Asche 3. Feb 2006 13:18


Merken von Daten
 
Hi @ all,

habe ein kleines Problem. Ich ändere in einer Datenbank eine Identnummer in eine andere.
Nun möchte ich mir merken, von welcher Nummer ich in welche Nummer umgewandelt habe.
Das heißt ich brauche eine Art Liste, der ich die Nummer vor und die Nach der Änderung mitgeben kann, die ich dann
anhand der Werte von NummerVor oder NummerNach oder nach beidem abprüfen kann ob diese Nummer bereits umgewandelt wurde und/oder in welche Nummer gewandelt wurde.
Jemand eine idee?

Gruß

CrazyPlaya

marabu 3. Feb 2006 13:33

Re: Merken von Daten
 
Hi,

du kannst deine Basis-Tabelle einfach um das Feld OLD_ID erweitern und dir in diesem Feld die alte ID merken.

Grüße vom marabu

K-Asche 3. Feb 2006 13:34

Re: Merken von Daten
 
Leider nicht ganz so einfach, die Tabelle ist eine BTrieve Datei leider kein SQL

K-Asche 3. Feb 2006 13:52

Re: Merken von Daten
 
Ich habe jetzt mal versucht mir ein Array von einem Record, welcher die benötigten Werte enthält zu erstellen und dann das Array abzufragen. Dazu übergebe ich das Array an eine Funktion, die dieses Element für Element durchprüfen soll. Funktioniert aber auch nicht, da ich ja das Array bereits mit SetLength auf einen bestimmten Max - Wert gestezt habe. Sobald ich nun auf das Element 1 zugreife bekomme ich eine Exception.

Hier mal der Code:
Delphi-Quellcode:
// Aufruf der Function
IndexOf(Value, IntToNr(Test);
Delphi-Quellcode:
function TfrmFortschritt.IndexOf(Ar : TCop; Value : String) : Integer;
Var I : Integer;
    S : String;
begin
  S := Value;
  Result := -1;
  For I := 0 to length(Ar) do Begin
    If CompareStr(S, Ar[I].BetAlt) = 0 then Begin
      Result := 1;
      break;
    End;
  End;
end;
Was mach ich falsch?

marabu 3. Feb 2006 14:09

Re: Merken von Daten
 
Der alte Off-By-One Fehler - der Index muss bis Pred(Length(Ar)) laufen. Aber warum verwendest du nicht einfach einen Assoziativspeicher:

Delphi-Quellcode:
var
  Map: TStringList;
  NewId, OldId: String;
begin
  Map := TStringList.Create;
  NewId := 'A1';
  OldId := '1A';
  Map.Values[NewID] := OldID;
end;
marabu


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