AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi mit TTable prüfen, ob ein Datensatzt schon existiert
Thema durchsuchen
Ansicht
Themen-Optionen

mit TTable prüfen, ob ein Datensatzt schon existiert

Ein Thema von kingflo · begonnen am 14. Feb 2006 · letzter Beitrag vom 14. Feb 2006
Antwort Antwort
kingflo

Registriert seit: 21. Jun 2004
Ort: Hamburg
502 Beiträge
 
Delphi 7 Professional
 
#1

mit TTable prüfen, ob ein Datensatzt schon existiert

  Alt 14. Feb 2006, 13:07
Datenbank: InterBase • Zugriff über: TTable
Hallo ich habe eine kleine Simple funktion, und einen Patienten zur Datenbak hinzuzufügen.
Und zwar werden in der Funktion nur Werte zu den bestimmten Tabellen eingetragen.

So sieht die Funktion aus:

Delphi-Quellcode:
function TformDesignerMain.CreatePatient(ID,Name,Vorname,gebDatum,sex,adresse1,
adresse2,plz,tel,fax,mail:string): string;

var

   PatientCode:integer;
   AdressCode :integer;

begin

   PatientCode:=untersuchung.GenUntCode;
   AdressCode :=untersuchung.GenUntCode;


   tablePatient.Open;
   TableAdresse.open;
   tablePatient.Append;
   TableAdresse.append;

   tablePatient.FieldValues['CODE']:=PatientCode;
   tablePatient.FieldValues['ADRESSECODE']:=AdressCode;
   tablePatient.FieldValues['PATIENTID']:=ID;
   tablePatient.FieldValues['NAME']:=Name;
   tablePatient.FieldValues['VORNAME']:=Vorname;
   tablePatient.FieldValues['GEBDATUM']:=gebDatum;
   tablePatient.FieldValues['GESCHLECHT']:=sex;


   TableAdresse.FieldValues['CODE']:=AdressCode;
   TableAdresse.FieldValues['ADRESSE1']:=adresse1;
   TableAdresse.FieldValues['ADRESSE2']:=adresse2;
   TableAdresse.FieldValues['PLZ']:=plz;
   TableAdresse.FieldValues['TEL']:=tel;
   TableAdresse.FieldValues['FAX']:=fax;
   TableAdresse.FieldValues['EMAIL']:=mail;

   tablePatient.Post;
   TableAdresse.post;
   TableAdresse.close;
   tablePatient.Close;


   result:=inttostr(PatientCode);


end;
Jetzt muss aber noch irgendwie ganz am Anfang geprüft werden, ob der Patient bereits existiert. Dazu muss nach Name und Vorname geprüft werden, und wenn der Patient existiert, muss der aktuelle wert von "tablePatient.FieldValues['CODE']" zurück gegeben werden, und die Funktion kann abgebrochen werden.

Leider weiß ich jetzt nicht, wie ich das am bessten, sinnvollsten und am einfachsten machen kann?
Hätte da zufällig jemand ne gute Idee?
Florian Gilde
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: mit TTable prüfen, ob ein Datensatzt schon existiert

  Alt 14. Feb 2006, 13:10
mit locate oder lookup
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: mit TTable prüfen, ob ein Datensatzt schon existiert

  Alt 14. Feb 2006, 13:16
Mit Name und Vorname ist ein Partient eindeutig identifiziert?
Ich selbst kenn mindestens schon einen der mit Name+Vorname genauso heißt. Also mindestens Anschrift hinzunehmen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
kingflo

Registriert seit: 21. Jun 2004
Ort: Hamburg
502 Beiträge
 
Delphi 7 Professional
 
#4

Re: mit TTable prüfen, ob ein Datensatzt schon existiert

  Alt 14. Feb 2006, 13:23
Stimmt Name und Vorname alleine ist nicht so gut.
Aber kann man nicht Name, Vorname und geburstdatum nehmen?
denn Adresse ist in einer anderen Tabelle.

Hat denn zufällig jemand ein Beispiel mit locate oder Lookup?
Florian Gilde
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: mit TTable prüfen, ob ein Datensatzt schon existiert

  Alt 14. Feb 2006, 13:31
Aus der Delphi Hilfe:
Zitat:
TIBTable.Locate Methode

Sucht in der Tabelle nach einem bestimmten Datensatz und macht diesen zum aktuellen Datensatz.

Klasse
TIBTable

Syntax


function Locate(const KeyFields: string; var KeyValues: Variant; Options: TLocateOptions): Boolean; override;


Beschreibung

Mit Locate kann eine Datenmenge nach einem bestimmten Datensatz durchsucht und der Cursor auf diesem Datensatz positioniert werden.

KeyFields ist ein String mit den Feldern, die durchsucht werden sollen. Trennen Sie die einzelnen Felder durch ein Semikolon.

KeyValues ist eine Variante mit den Schlüsselwerten. Enthält KeyFields nur ein Feld, gibt KeyValues den Wert dieses Feldes im gewünschten Datensatz an. Gibt es mehrere Schlüsselfelder, übergeben Sie in KeyValues ein variantes Array, das Sie auch zur Laufzeit mithilfe der Routine VarArrayOf erstellen können. Zum Beispiel:
Delphi-Quellcode:
 with CustTable do
   Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P', '408-431-1000']), [loPartialKey]);
      TLocateOptions Opts;
   Opts.Clear();
   Opts << loPartialKey;
   Variant locvalues[3];
   locvalues[0] = Variant("Sight Diver");
   locvalues[1] = Variant("P");
   locvalues[2] = Variant("408-431-1000");
   CustTable->Locate("Company;Contact;Phone", VarArrayOf(locvalues, 2), Opts);
Options ist eine Menge von Flags, mit denen Sie optional weitere Suchkriterien für String-Felder festlegen können. Enthält der Parameter den Wert loCaseInsensitive, findet keine Unterscheidung zwischen Groß- und Kleinschreibung statt. Bei loPartialKey müssen Strings nicht vollständig übereinstimmen. Wenn Options eine leere Menge ist oder KeyFields keine String-Felder enthält, wird der Parameter ignoriert.

Locate gibt true zurück, wenn ein Datensatz gefunden wird. Dieser Datensatz wird außerdem aktiviert. Andernfalls gibt Locate false zurück.

Die Methode verwendet bei der Datensatzsuche die schnellstmögliche Methode. Sind die Suchfelder in KeyFields indiziert und ist der Index mit der angegebenen Suchoption kompatibel, wird der Index verwendet. Andernfalls wird für die Suche ein Filter erstellt.
Markus Kinzler
  Mit Zitat antworten Zitat
kingflo

Registriert seit: 21. Jun 2004
Ort: Hamburg
502 Beiträge
 
Delphi 7 Professional
 
#6

Re: mit TTable prüfen, ob ein Datensatzt schon existiert

  Alt 14. Feb 2006, 13:33
Danke ich hatte auch gerade gefunden.
Florian Gilde
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:00 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