AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DB sortiern trotz MasterSource
Thema durchsuchen
Ansicht
Themen-Optionen

DB sortiern trotz MasterSource

Ein Thema von Christian18 · begonnen am 5. Aug 2005 · letzter Beitrag vom 31. Aug 2005
Antwort Antwort
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#1

DB sortiern trotz MasterSource

  Alt 5. Aug 2005, 13:17
Datenbank: Paradox • Version: 7 • Zugriff über: BDE
Hallo,

ich habe ein kleines Problem mir meiner Paradox7 Tabelle. Also ich habe eine Tabelle in der sind Kundendaten gespeichert. Dann habe ich auch noch eine andere Tabelle in der sind die Aufträge gespeichert. Diese beiden Tabellen stehen im bezug zueinander. Also ich meine das die Auftrag Tabelle an der Tabelle Kunden drann hängt. Das habe ich über die MasterSource gemacht. So jetzt wollte ich das so machen, das ich die Auftrag Tabelle sortieren kann. also nach datum und so. das wollte ich auch über die Eigenschaft IndexName machen, aber das funktioniert leider nicht, da ich bei der Auftrags Tabelle sind einen Index drinn habe. Und zwar den der die beiden Tabellen zusammen hält. Wie kann ich jetzt meine Auftrag Tabelle sortieren???

Mit freundlichen Grüßen

Christian18
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: DB sortiern trotz MasterSource

  Alt 5. Aug 2005, 13:34
Zitat von Christian18:
Hallo,

ich habe ein kleines Problem mir meiner Paradox7 Tabelle. Also ich habe eine Tabelle in der sind Kundendaten gespeichert. Dann habe ich auch noch eine andere Tabelle in der sind die Aufträge gespeichert. Diese beiden Tabellen stehen im bezug zueinander. Also ich meine das die Auftrag Tabelle an der Tabelle Kunden drann hängt. Das habe ich über die MasterSource gemacht. So jetzt wollte ich das so machen, das ich die Auftrag Tabelle sortieren kann. also nach datum und so. das wollte ich auch über die Eigenschaft IndexName machen, aber das funktioniert leider nicht, da ich bei der Auftrags Tabelle sind einen Index drinn habe. Und zwar den der die beiden Tabellen zusammen hält. Wie kann ich jetzt meine Auftrag Tabelle sortieren???

Mit freundlichen Grüßen

Christian18
Verwende anstelle der "Child"-Tabelle eine Query mit einem Parameter, der so heisst wie das Schlüsselfeld in der "Parent"-Tabelle. Dann setze die Query-Eigenschaft DataSource auf die Datasource, die mit der "Parent"-Tabelle verknüpft ist. Alles weitere (Close, ParambyName..., Open der Query) geht dann automatisch. Der Effekt ist der gleiche. Nur hast Du dann in der "Child"-Query die Option, ein vom Schlüsselfeld abweichendes ORDER BY zu verwenden.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#3

Re: DB sortiern trotz MasterSource

  Alt 20. Aug 2005, 12:20
Hallo,

hat jemand auch noch eine andere Idee. Wie ich das machen kann??? Frage: siehe oben.

MFG Christian18
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#4

Re: DB sortiern trotz MasterSource

  Alt 20. Aug 2005, 13:14
Hallo Christian,

Habe früher viel mit Paradox gemacht und ich bin über Unzulänglichkeiten der BDE mit Paradox fast dem Wahn verfallen. Da sind viele Macken drin und deswegen rate ich Dir zunächst mal davon ab Paradox weiterzuverwenden, wenn Du da mehr mit aufbauen magst.

Das mit den Indexen funktioniert leider auch nur in der Haupttabelle richtig. In der Detailtabelle gab es da immer Probleme. Der Ansatz es mit einer Query zu machen ist der richtige Weg. Das Problem ist leider, das bei sortierten Mehrtabellenqueries bei BDE-Paradox das RequestLive verloren geht, also die Edierbarkeit und damit ist eine Query alleine so keine Lösung.


NACHTRAG 1: Mein Weg war dann es über Eintabellenqueries zu machen, um immer eine Live-Query (änderbar) zu haben. Das ist, wenn man es weiß, auch recht einfach. Du hast eine Query für die Mastertabelle mit Orderstatement. An diese Query ist dann natürlich auch eine DataSource angeschlossen. Im OnChangeEvent dieser Master-DataSource baust Du die SQL-Abfrage der (Where-Teil) der Detail-Query (Deine Auftragstabelle) zusammen (Wehere Referenzfeld = Master-Eid). Damit hast Du zwei edierbare Tabellen, die sich synchronisieren. Das geht sogar in tieferer Staffelung. Die Verfahrensweise hat mich doch recht lange bei der lizenzfreien Paradoxtabelle gehalten. Bei komplexeren Auswertungen ist dann mit Paradox natürlich schluss.

NACHTRAG 2: Absolute Database ist eine Datenbank mit der man gut zurechtkommt, wenn man von der Paradoxschiene her kommt. Letzlich bin ich bei Firebird gelandet, aber der Schritt ist doch recht happig.


Viele Grüße // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#5

Re: DB sortiern trotz MasterSource

  Alt 21. Aug 2005, 19:40
Hallo,

also ich kann die Erfahrung von mschaefer nicht als meine Erfahrung wiedererkennen. Ich habe in der Vergangenheit sehr viel mit Paradox gemacht und viele Anwendungen laufen noch heute, ohne dass sich ein Kunde beschwert hätte. Neue Projekte würde ich aber auch nicht mehr mit Paradox machen, weil die BDE ja nicht mehr gepflegt wird.

Du könntest in der Auftragstabelle einen zusammengesetzten Schlüssel als Sekundärindex benutzen, dann kannst du mit dem ersten Feld dieses Indexes die Tabellen verbinden und nach dem 2. Feld wird dann automatisch sortiert.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#6

Re: DB sortiern trotz MasterSource

  Alt 27. Aug 2005, 09:52
Hallo,

ich habe das jetzt mal versucht und habe es leider nicht geschafft. Kannst du mir vieleicht ein Detailiertes Beispiel geben oder mal eine solche DB hier anhängen???

MFG Christian18
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#7

Re: DB sortiern trotz MasterSource

  Alt 27. Aug 2005, 14:49
Hallo Christian18,

ich hab schnell ein Beispiel zusammengestöpselt .

Definiere noch einen ALIAS BDETest, der auf das Verzeichnis mit den beigefügten Tabellen zeigt und los gehts. Das Programm nutzt ID als Master / Detailverbindung, sortiert aber die Detailtabelle nach Sort2, obwohl ID / Sort1 der Schlüssel ist.
Angehängte Dateien
Dateityp: zip bde_masterdetail_109.zip (3,8 KB, 11x aufgerufen)
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#8

Re: DB sortiern trotz MasterSource

  Alt 31. Aug 2005, 13:46
Moin, moin,

Nachtrag zu Paradox: MrSpock hat recht, dass mit den Indexen ist bei Paradox kein Problem! Nachdem ich mal wieder auf eine Anwendung einen Blick geworfen habe, zeigte sich, dass Request-Live nicht wegen dem Index, sondern aufgrund einer Group by und Having Klausel über zwei Tabellen versagt hat. Das sind aber Grenzen die letzlich in der BDE und nicht im Datenbankformat liegen. Die Variante zwei aufeinander abgestimmte Queries zu nehmen läuft noch heute und liefert eine Live-Datenmenge (also änderbar). Das praktische ist dabei, dass man auch Mehrfachkaskadierungen durchführen kann.

Zu Alias: Bei mir hat die DB immer in einem Unterverzeichnis des Programms gelegen und da konnte man dieses über ExtractFilepath(...) + Dateiverzeichnis im Programm ermitteln. Die Aliasdefinition entfällt somit.

Technisch ist es übrigens kein Problem lediglich die benötigten BDE-Dateien in ein Programmunterverzeichnis zu legen und diese bei Programmstart dynamisch zu laden. Damit ist überhaupt keine BDE-Installation notwendig, da das Programm in der Lage ist, Dateien von seinem Standort aus zu ermitteln. Man hat also eine mit Unterverzeichnissen völlig variabel verschiebbare Anwendung. Allerdings bin ich mir über die rechtliche Erlaubnis solcher "Tricks" durch Borland nicht im klaren, da die BDE so nicht mit einem zugelassenen Installationsporgramm installiert wird, sondern die wenigen dll´s für Paradox einfach in ein Verzeichnis kopiert werden.


Fazit: Der vulkanische Ansatz der Indexierung ist präzise!

Würde aber zudem zu Queries raten, da die Filterung effizienter ist und man auch mit Query-Änderung, durch das Programm, variable Sortierungen für den User ermöglichen kann. Zudem empfinde ich eine notwendige Alias-Definition als schwierig aus der Ferne zu warten und deshalb habe ich den Weg gewählt sie ganz zu umgehen.



Grüße // Martin
Martin Schaefer
  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 05:50 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