AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Hierarchie in Datenbank und DataSet abbilden
Thema durchsuchen
Ansicht
Themen-Optionen

Hierarchie in Datenbank und DataSet abbilden

Ein Thema von Morphie · begonnen am 20. Jun 2013 · letzter Beitrag vom 20. Jun 2013
Antwort Antwort
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#1

AW: Hierarchie in Datenbank und DataSet abbilden

  Alt 20. Jun 2013, 13:59
Unter anderem soll das GAEB unterstützten, richtig

Ich habe ein Grid, welches mit der Datenbank verbunden ist (über eine Query)
Dieses Grid hat 3 Aufgaben:
1. vorhandene Positionen darstellen
2. vorhandene Positionen bearbeiten
3. neue Positionen (manuell) erfassen

Das Grid ist also sowohl Eingabemaske als auch Darstellung. Das ist auch so gewollt...

Den Datenbankaufbau habe ich ja schon oben gepostet.
Man könnte die Positionsnummer natürlich auch komplett abspeichern (01.01.0001), aber genau das möchte ich nicht. Ich möchte (wie z.B. bei GAEB XML) eine echte Hierarchie aufbauen, nur die jeweils für die Position relevante Ordnungszahl (01, 01, 0001) abspeichern und die komplette Positionsnummer aufgrund der Baumstruktur von meinem Programm aufbauen lassen.

Der Vorteil: Ich ändere bei einer Position nur die OZ, und alle Unterpositionen werden automatisch angepasst. (bzw. sie müssen gar nicht angepasst werden, weil die Positionsnr ja dynamisch erzeugt wird)

Ich suche jetzt eine passende Stelle, bei der ich diese Positionsnummer in meinem DataSet aufbauen kann. Dazu habe ich ein InternalCalcField, also ein Feld was nicht in die Datenbank geschrieben wird, und könnte das Feld über OnCalcFields entsprechend berechnen lassen. Ich muss also innerhalb von OnCalcFields irgendwie auf die Parent-Position zugreifen können
Wenn ich das möglichst performant gelöst kriege, ist mein Problem gelöst


Ich hatte sowas schon mal in .NET mit ORMs programmiert. Dort hatte ich zu jeder Position ein Property "Parent"... Die Positionsnr war dann auch nur ein Property, welches in etwa diesen Getter hatte:
Code:
if (this.Parent == null)
{
  value = this.OZ;
}else{
  value = this.Parent.Positionsnr + "." + this.OZ;
}
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#2

AW: Hierarchie in Datenbank und DataSet abbilden

  Alt 20. Jun 2013, 14:40
Meines Erachtens wäre es besser wenn du eine Funktion bereitstellst, die die Nummerierung übernimmt anhand eines Startwertes und man diese aktiv aufrufen muss.

Diese muss ja auch irgendwie festgeschrieben und nicht jedes mal neu berechnet werden.

Du gibst jedem Datensatz eine Feld für die Positionsnummer und schon läuft das ganze Ding...
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#3

AW: Hierarchie in Datenbank und DataSet abbilden

  Alt 20. Jun 2013, 14:47
Wie gesagt, genau das möchte ich eben nicht machen... Erfahrungsgemäß ist das fehleranfällig, und die Informationen werden teilweise redundant gespeichert.
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#4

AW: Hierarchie in Datenbank und DataSet abbilden

  Alt 20. Jun 2013, 15:34
Wie gesagt, genau das möchte ich eben nicht machen... Erfahrungsgemäß ist das fehleranfällig, und die Informationen werden teilweise redundant gespeichert.
ich meinte aber nicht den ganzen Zweig, sondern immer nur seine eigene Position...
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#5

AW: Hierarchie in Datenbank und DataSet abbilden

  Alt 20. Jun 2013, 16:20
Zitat:
Kennt Firebird das "Connect by"?
Nein, aber rekursive Common Table Expressions (CTE).
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#6

AW: Hierarchie in Datenbank und DataSet abbilden

  Alt 20. Jun 2013, 16:21
Die aber wie gesagt ReadOnly sind...
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
772 Beiträge
 
#7

AW: Hierarchie in Datenbank und DataSet abbilden

  Alt 20. Jun 2013, 20:35
Die aber wie gesagt ReadOnly sind...
Bei manchen Komponenten kann man die insert- und update-Statements getrennt (manuell) angeben, da geht dann auch mehr als "select * from einzelneTabelle" (also auch Abfragen, die nicht automatisch updatebar sind). Ob das bei FireDac geht, weiß ich allerdings nicht.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Hierarchie in Datenbank und DataSet abbilden

  Alt 20. Jun 2013, 14:58
Diese muss ja auch irgendwie festgeschrieben und nicht jedes mal neu berechnet werden.
Wenn gewährleistet ist, daß der "Vater" immer gleich bleibt, könnte man dies so lösen.

Kennt Firebird das "Connect by"? Damit kann man in Oracle solche verbindungen ablaufen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  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 03:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz