Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi unique? (https://www.delphipraxis.net/53605-unique.html)

Sanguis 19. Sep 2005 21:43

Datenbank: Paradox • Version: 7 • Zugriff über: BDE

unique?
 
Hi,
ich habe da ein kleines Problem. Ich habe schon euer Forum ein wenig durchsucht, aber nicht das gefunden was für mich passt.

Ich arbeite mit einer Paradox Datenbank über die BDE (ja, ich weiss das die ADO Komponenten besser sind.. ich benutze in dem fall aber trotzdem die BDE)...

Jedenfalls habe ich jetzt das Problem, das ich ein Unique Feld brauche.
Ich habe ein ID Feld welches als Primärschlüssel auch hochzählt und irgendwo sicherlich Unique ist.
Aber ich brauche noch für ein anderes Feld in dem ein String gespeichert wird, das da nix doppelt vorkommt. Ich finde nur nirgens die Möglichkeit das bei der Paradox Tabelle zu machen.
Muss ich tatsächlich selbst manuell bei jedem neuen Eintrag die Datenbank durchsuchen?

marabu 20. Sep 2005 06:34

Re: unique?
 
Hallo Andy,

Zitat:

Zitat von Sanguis
Ich habe schon euer Forum ein wenig durchsucht

ist doch auch dein Forum - oder?

Zitat:

Zitat von Sanguis
Jedenfalls habe ich jetzt das Problem, das ich ein Unique Feld brauche.

Du kannst bei Paradox Tabellen nicht einfach einem Feld das Attribut UNIQUE zuweisen. Ab Paradox Version 5 wird aber das Indexattribut ixUnique unterstützt, welches beim Primärindex automatisch gesetzt wird. Du kannst also für dein String-Feld einen Sekundärindex definieren, den du als eindeutig festlegst. Das geht z.B. in der Datenbankoberfläche oder schau mal in der Delphi Online Hilfe unter TTable.AddIndex und TIndexOption.

Das Durchsuchen deiner Tabelle kannst du dir dann sparen und so vorgehen:

Delphi-Quellcode:
begin
  Table.Insert;
  Table.FieldByName('STRINGFELD').AsString := 'Nochmal';
  try
    Table.Post;
  except
    ShowMessage('Doppelter Wert');
  end;
end;
Grüße vom marabu

Sanguis 20. Sep 2005 11:44

Re: unique?
 
Hi,
erstmal danke für deine Antwort.
Ich habe gestern stundenlang die Datenbankoberfläche durchsucht.. ich habe sogar ein anderes Freeware Tool runtergeladen für die Datenbankverwaltung. Aber ich habe das nirgens gefunden. Auch die Hilfe hat mir leider nicht weitergeholfen.
Suche ich denn richtig, wenn ich einfach nur was suche wo ich nen Haken machen kann, quasi?

Danke für deinen Quellcode. Die Methode ist für mich irgendwie auch neu.
Ich habe Datensätze bisher immer richtig per SQL eingefügt.. das ist also eigentlich garnicht nötig?

marabu 20. Sep 2005 11:52

Re: unique?
 
Hi,

in der Datenbankoberfläche findest du die Indexoptionen, wenn du beim Umstrukturieren oder Neuanlegen einer Tabelle "Sekundärindizes" aus der Combobox Tabelleneigenschaften auswählst und dann einen Index definierst oder änderst.

Ob du SQL Statements für die Datenmanipulation verwendest oder es wie in meinem Beispiel machst - beides geht. So richtig Bedeutiúng bekommt diese Entscheidung aber erst, wenn du von einer local database auf einen sql server umsteigst.

marabu

Sanguis 20. Sep 2005 12:14

Re: unique?
 
Hi,
also ich glaube ich hab gefunden was du meinst. Ich habe dann auch mal einen Index definiert, allerdings ohne weitere Optionen anzuklicken (Eindeutig, Groß/Kleinschreibung usw...).. Aber da hatte ich keine Wirkung.
Hab direkt in der Datenbankoberfläche nen neuen Datensatz angelegt der in dem einen Feld eine Dublette hatte.. Und ich habe keine Fehlermeldung bekommen und es wurde alles angelegt.
Dann habe ich versucht den Index nochmal zu ändern und "Eindeutig" mit nem haken zu versehen. Als ich das speichern wollte, bekomme ich den Fehler "Ungültiger Indextyp" ?

marabu 20. Sep 2005 12:22

Re: unique?
 
Hi,

wenn du deine Tabelle in der Datenbankoberfläche mit "Umstrukturieren" oder "Strukturinfo" öffnest, dann siehst du in der Titelzeile des Fenster welcher Tabellentyp vorliegt. In der Delphi Online Hilfe unter TIndexOption findest du einige Hinweise, welche Tabellentypen welche Indexoptionen unterstützen. Für Paradox-Tabellen benötigst du minimal Version 4.

marabu

Sanguis 20. Sep 2005 12:37

Re: unique?
 
Hi,
Es ist definitiv Paradox 7.
Und laut Delphi Hilfe wird der Typ "Eindeutig" auch unterstützt (sonst würde ich da auch keinen Sinn drin sehen).. nur eben die anderen beiden zur auswahl stehenden Typen nicht. Die brauche ich aber auch nicht.
Trotzdem bekomme ich wenn ich die Option anklicke eine Fehlermeldung. Ohne die Option bekomme ich keinen Fehler, kann aber weiterhin Dublikate einfügen.
Irgendwie verwirrt mich das *g*

Tut mir auch leid das ich hier solche komischen, warscheinlich Anfängerfragen, stelle.. aber ich komme einfach nicht weiter..

Andy

marabu 20. Sep 2005 12:49

Re: unique?
 
Merke dir doch mal die Indexdefinition und den Namen, lösche den Index und lege ihn anschließend neu an. Eventuell ist ja eine Datei korrupt. Wenn du keine Paradox-Vollversion besitzt, dann kannst du hiermit reparieren: klick

marabu

Sanguis 20. Sep 2005 12:57

Re: unique?
 
Hi,
danke.. auch für den Link.
Ich muss jetzt leider zu nem Geburtstag. Aber ich werde das heute Abend weiter ausprobieren und danach nochmal schreiben ob es geht oder nicht.

Andy

Sanguis 21. Sep 2005 00:28

Re: unique?
 
Hi,
also ich hab das Tool drüberlaufen lassen. Es hat keine Fehler gefunden.
Aaaber, überraschung.. Danach konnte ich den Index ohne Probleme anlegen und er wurde auch gespeichert ohne das ich eine Fehlermeldung bekommen habe.
NUR:
Es bringt nichts.
Ich kann weiterhin in der Datenbankoberfläche 2 gleiche Datensätze in dem Feld eingeben ohne das gemeckert wird. Wird alles gespeichert.
Muss ich das ganze doch jedesmal per Hand durchsuchen ? :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:43 Uhr.
Seite 1 von 2  1 2      

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