AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Erstellung eines Index bei Paradox / DBase III+ Dateien
Thema durchsuchen
Ansicht
Themen-Optionen

Erstellung eines Index bei Paradox / DBase III+ Dateien

Ein Thema von DBman · begonnen am 31. Mai 2003 · letzter Beitrag vom 9. Jun 2003
Antwort Antwort
Seite 2 von 3     12 3      
DBman

Registriert seit: 31. Mai 2003
Ort: nähe hannover
77 Beiträge
 
#11

Primärindex nur für erste Spalte?

  Alt 6. Jun 2003, 12:59
Ich habe selber nochmal ein wenig rumprobiert und herausbekommen , dass es bei mir mit der Indexerzeugung nur funktioniert , wenn sich mein Primärindex das erste Feld der Tabelle bezieht.... macht das Sinn ?
Naja egal hauptsache es funktioniert so.
Aber da ist mal wieder ein neues Problem hervorgekommen ich versuche schon durch rumgetüftel das wieder rauszukriegen , aber vielleicht weiß ja einer von euch genauer woran es liegen könnte:

Ich habe 2 Tabelle tblKuDa und tblKuPe , wobei in beiden Tabellen das Feld KUNKZ existiert.

Das erste Feld von tblKuDa heisst KUNKZ , das erste Feld von tblKuPe heisst NR.
Bei der Indexerzeugung von tblKuDa gibts jetzt (wo ich als Primärindex die erste Spalte genommen habe ) eigentlich keine Probleme.
Nur wenn ich die bei tblKuPe auskommentierte Zeile entkommentiere , so wird mir eine Fehlermeldung ausgegeben : Der Index sei bereits vorhanden.
Das finde ich aber ziemlich komisch weil das KUNKZ oben hat mit dem KUNKZ unten ja nichts zu tun. Es ist ja von einer anderen ParadoxTabelle.Hm... muss irgendwie daran liegen dass der Primärindex auch nach KUNKZ indiziert is... aber halt nach dem anderen von der anderen tabelle..... Macht für mich also wenig Sinn.
Eine Auflösung des Rätsels wäre toll.

Delphi-Quellcode:
tblKuDa.Exclusive:=True;
tblKuDa.Close;
tblKuDa.AddIndex('','KUNKZ',[ixPrimary]);
tblKuDa.AddIndex('KunkzDAIndx','KUNKZ',[ixCaseInSensitive]);
tblKuDa.AddIndex('FirmaDAIndx','FIRMA',[ixCaseInSensitive]);
tblKuDa.AddIndex('TelDAIndx','TEL' , [ixCaseInSensitive]);
tblKuDa.Open;


tblKuPe.Exclusive:=True;
tblKuPe.Close;
tblKuPe.AddIndex('','NR',[ixPrimary]);

//tblKuPe.AddIndex('KPEindx','KUNKZ',[ixCaseInSensitive]); //<-Kommentar

tblKuPe.AddIndex('NamePEIndx','NAME',[ixCaseInSensitive]);
tblKuPe.AddIndex('TelPEIndx','TEL',[ixCaseInSensitive]);
tblKuPe.Open;
PS:Es ist glaub ich egal ob ich bei AddIndex dem Primärindex nen Namen zuweise oder nicht , (ich spreche ich später sowieso über '' an oder??
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#12
  Alt 6. Jun 2003, 13:08
Ein Grossteil Deiner Fragen sollte sich klären, wenn Du Dir mein Posting noch mal durchliest.

Auf den ersten Blick sieht alles sauber aus. Die einzige Möglichkeit, welche ich sehe: Die Tabelle hat den Index wirklich bereits. Eine Zusammenhang mit der anderen Tabelle sollte eigentlich nicht bestehen. Das kannst Du aber leicht überprüfen, wenn Du die Index-Erstellung bei erster Tabelle einmal nicht durchführst.
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
DBman

Registriert seit: 31. Mai 2003
Ort: nähe hannover
77 Beiträge
 
#13
  Alt 6. Jun 2003, 14:15
Mario du hattest irgendwie recht.

Ich habe einfach die Indizes nochmal manuell in dem Verzeichnis gelöscht dann ging es.

Aber die Indexe SOLLEN JA AUCH EXISTIEREN.

Ich will die ja bei jedem Programmstart mit Addindex neu überschreiben.
Also das was ich da geschrieben habe steht bei mir in der FormCreate -Methode. Deswegen verstehe ich nicht , weshalb ich eine Fehlermeldung bekomme , von wegen der Index existiert bereits , wenn ich ihn doch überschreiben will (Die anderen indizes Existierten ja auch alle bereits)....
Hm , naja so ganz klar ist mir das noch nich.
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#14
  Alt 6. Jun 2003, 14:18
Überschreiben wird nicht gehen. Du musst erst alle nicht benötigten oder veralteten Indizes löschen (evtl. DeleteIndex?).
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
DBman

Registriert seit: 31. Mai 2003
Ort: nähe hannover
77 Beiträge
 
#15
  Alt 6. Jun 2003, 14:18
Jetzt startet zwar das Programm ohne Fehlermeldung , wenn ich jedoch nach 'NamePEIndx' sortieren möchte bekomme ich die Fehlermeldung
'NamePEIndx' Index nicht vorhanden....
Aber der wurde doch gerade mit Addindex erzeugt??
Also ich werde daraus nicht schlau
  Mit Zitat antworten Zitat
DBman

Registriert seit: 31. Mai 2003
Ort: nähe hannover
77 Beiträge
 
#16

noch mal eine kleine frage...

  Alt 6. Jun 2003, 17:18
Ich hab das jetzt doch hingekriegt.Danke nochmal für die Tips.


Aber ich habe nochmal eine kleine Frage , und zwar habe ich eine DBase Datei in Paradox konvertiert. Bei Dbase Dateien gibts ja keinen Primärindex.

Naja und in dieser (Detail-)Tabelle stehen nun auch teilweise gleiche Datensätze drin.
Wenn ich nun über den Primärindex sortiere , so werden die "doppelten" Datensätze aber ja quasi "rausgeschmissen"

Also nehmen wir an : Ich habe eine Master Tabelle in der die Kunden drin stehen , und eine DetailTabelle in der die Bestellungen drin stehen.

In der Master Tabelle steht nun KundenNr / VornnameNachname / Telefon
In der Detail Tabelle steht nun Nr / KundenNr / Name (des Produkts)

nun dürfen die doppelten Datensätze in der DetailTabelle jetzt ja aber nicht "rausgeschmissen" werden...

In einem Buch hab ich dazu folgendes gefunden :

Zitat:
Primärschlüssel - Um alle Datensätze einer Tabelle eindeutig zu identifizieren , kann der TAbelle ein weiteres Attribut NUMMER hinzugefügt werden , welches die Datensätze durchnummeriert.Dadurch ist es möglich , zwei Einträge der Tabelle immer anhand ihrer Nummer zu unterscheiden.Das Attribut NUMMER ist in diesem Fall der Primärschlüssel der Tabelle.Jede Tabelle kann nur einen Primärschlüssel besitzen. Ein Primärschlüssel einer Tabelle ist ein Attribut oder eine Attributkombination , deren Werte die Datensätze doser Tabelle eindeutig identifizieren.
hm...Ja genau so ein Attribut NUMMER dass die Datensätze quasi nach Datensatznummer durchnummeriert (wie es in DBASE ja war) bräuchte ich eigentlich.
Aber wie geht das , dass automatisch die Datensatznummer in diesem Feld steht , ich will ja schließlich nicht ein Feld namens Nummer erzeugen und dann da 1 , 2, 3,4 ,5..... reinschreiben..

Ich hoffe meine Frage ist nicht zu dumm , um in diesem Forum gestellt zu werden.

PS:Vielen Dank nochmal an alle guten Tips!
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#17
  Alt 6. Jun 2003, 17:34
Hallo DBMan,
das kannst du am besten über die Datenbankoberfläche machen. Ein Feld hinzufügen, dann an den Anfang schieben. Als Typ wählst du "Zähler" (+) und dann klickst du noch in die rechte Spalte, um aus diesem Feld den Primärindex (ggf. zusammen mit der alten Nummer als zusammengesetzten Index). Wenn du später mal eine Satz löscht, wird die Nummerierung aber nicht geändert und die Lücke im Zähler auch nicht mehr benutzt. Aber das sollte ja egal sein. Oder?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
DBman

Registriert seit: 31. Mai 2003
Ort: nähe hannover
77 Beiträge
 
#18

hm..naja

  Alt 6. Jun 2003, 17:45
Danke für die Hilfe Mr.Spock ,
aber was meinst du damit , dass wenn ich einen Satz lösche dass das dann nicht mehr angepasst wird?Also das Feld Nummer sollte schon immer die Datensatznummer haben...

Naja ich spiel damit mal ein bisschen rum.

Dankschön
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#19
  Alt 6. Jun 2003, 22:17
Hallo DBMan,

ich meine das so: Der Zähler wird NIE zurückgesetzt. Angenommen du hast 100 Datensätze und löscht alle 100. Dann bekommt der nächste (erste) Datensatz die Nummer 101.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
DBman

Registriert seit: 31. Mai 2003
Ort: nähe hannover
77 Beiträge
 
#20
  Alt 6. Jun 2003, 22:46
Ahso ne das is ja eigentlich egal.

Passt in diese Thema jetzt zwar nich direkt rein , aber kannst du mir zufällig noch sagen wie man bei einem DBGrid die Farbe Spaltenüberschrift verändern kann?
Oder sollte ich da mal nach neuen Komponenten auf delphipages nachschauen?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 04:59 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