Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Master - Child - wie soll ich dies lösen (https://www.delphipraxis.net/42551-master-child-wie-soll-ich-dies-loesen.html)

karl der große 20. Mär 2005 18:31

Datenbank: ACCESS • Version: 2000 • Zugriff über: TADOConnection, TBetterADODataset, TDatasource

Master - Child - wie soll ich dies lösen
 
Hallo!

Hab ein schwieriges Problem!

Hab folgende Tabellen mit den jeweilig relevanten Feldern

Mitarbeiter
Nummer
(darin stehen alle Mitarbeiterdaten mit der Mitarbeiternummer)

Objektkunde
Objektnummer
(darin stehen alle Projekte der Firma)

Stunden
Mitarbeiternummer
Datum
Objektnummer
erbrachte Leistung
(in dieser Tabelle werden die geleisteten Arbeitszeiten erfasst, nach Mitarbeiternummer, Datum und entsprechender Objektnummer)

Stundentag (Hilfstabelle)
Tag (Datum)
Mitarbeiternummer
Objektnummer
(diese Tabelle habe ich als Hilfstabelle angelegt, da ich nicht weiss, wie es anders funktionieren sollte)

Möchte nun ein VirtualStringTree aufbauen, der wie folgt aussieht

Ich wähle vorab ein Objekt über die Objektnummer - diese steht also fest. Für dieses Objekt soll er folgenden Tree anzeigen

Mitarbeiter 1
Datum
erbrachte Leistung
erbrachte Leistung
Datum
erbrachte Leistung
erbrachte Leistung
Mitarbeiter 2
Datum
erbrachte Leistung
erbrachte Leistung
Datum
erbrachte Leistung
erbrachte Leistung

usw.

kann mir jemand sagen, wie ich die einzelnen Commandtext's aufbauen muss, dass es funktionert
versuche nun schon seit mehreren Stunden eine Lösung zu finden, aber ich bin langsam am verzweifeln. :wall:

arbeite mit TADOConnection, TBetterADODataset, TDatasource

vielen Dank
Karl

Albi 20. Mär 2005 18:57

Re: Master - Child - wie soll ich dies lösen
 
Hallo Karl,

ich verstehe jetzt nicht so ganz den Aufbau deiner Tabellen (speziell Stunden & StundenTag), dass ist doch das gleiche, oder?

Ich versuche mal es zu verstehen. Du hast Objekte die Mitarbeiter verwaltet werden und nun willst Du erfassen wie lange ein Mitarbeiter an dem Objekt gearbeitet hat. Sprich den Tag und die Zeit.

Da reicht doch eine Hilftabelle auch, - aber nur wenn ich richtig verstanden - dann würde ich das ganze so aufbauen:

Hilfstabelle:
ID PrimaryKey
Mitarbeiter_ID
Objekt_ID
Begin_Bearbeitung (Datum+Uhrzeit)
Ende_Bearbeitung (Datum+Uhrzeit)
Erbrachte_Leistung
usw.

Dann kannst Du einfach per SQL die entsprechenden DB durchgehen. So wie Du das schon hast.

karl der große 20. Mär 2005 19:14

Re: Master - Child - wie soll ich dies lösen
 
Hallo Albi!

Also folgendes:

Ich habe Projekte - in der Tabelle Objektkunden stehen die ganzen Projektdaten - auch die zentrale Objektnummer

In der Tabelle Mitarbeiter stehen alle Mitarbeiterdaten

In der Datei Stunden stehen alle gearbeiten Stunden aller Mitarbeiter auf allen Projekten inkl. aller sonstigen Daten der geleisteten Arbeit

In der Datei Stundentag stehen nur die Objektnummer, die Mitarbeiternummer und das Datum

Was ich nun brauche ist folgendes:

einen VirtualStringTree der nach vorher erfolgter Objektauswahl folgendes anzeigt:

Mitarbeiter
Datum
erbrachte Leistung
etc.

Meine Probleme in Kurzform

Nicht alle Mitarbeiter haben auf dem ausgewählten Objekt gearbeitet
Nicht alle Stunden eines Mitarbeiters betreffen das ausgewählte Objekt

ich habs zuvor ohne die Hilfstabelle stundentag versucht und hab dann bei einem Mitarbeiter, der an einem Tag drei verschiedene Leistungen für das selbe Projekt erledit hat,
im virtualStringTree dreimal das selbe Datum als Node erhalten mit jeweils einem Untereintrag

es sollte aber so sein, dass er den Mitarbeiter einmal hinschreibt, dann nur einmal das jeweilige Datum und dann von diesem Mitarbeiter in der dritten Ebene des Trees alle geleisteten Arbeiten des einen Mitarbeiters an dem einen Tag.

ich hoffe ich konnte mein problem etwas beschreiben

danke

karl

etom291272 20. Mär 2005 19:31

Re: Master - Child - wie soll ich dies lösen
 
:-D also ich würde dass über folgende Beziehungen lösen und die Datenbanken so aufbauen.

Haupttabelle Objekte
Objektid, Bez, ... als Felder

Untertabelle Zeiten
Objektid, Datum, Mitarbaiter, geleistete Zeit, ... als Felder

beim auswählen eines Objekts sqldataset mit gruppierung das für das gewählte Objekt jeweils 1 record pro
gefundene Arbeitszeit eines bestimmten Mitarbeiters je Datum liefert.(könnte ne view sein) -> wäre die 1. und 2. ebene des Baums.

diese Sätze abarbeiten und bei jedem Satz weitere Abfrage die für den aktiven Mitarbeiter an diesem Tag
die Sätze seiner Arbeitszeiten liefert 3. ebene des Baums

müsste imho so funktionieren

karl der große 20. Mär 2005 19:43

Re: Master - Child - wie soll ich dies lösen
 
Hi!

Vorerst Danke!

Aber ich versteh das nicht ganz - was meinst du mit dem view.

Karl

etom291272 20. Mär 2005 19:52

Re: Master - Child - wie soll ich dies lösen
 
du brauchst die tabelle stundentag nicht

mach einfach mit der abfrage entwurfansicht in access eine abfrage in der du die tabellen Mitarbeiter-Objektkunde-Stunden in eine beziehung zu einander setzt

also von objektkunde.id auf stunden.objektid und von stunden.mitarbeiterid auf mitarbeiter.id abfrage speichern und gruppierung nach datum und mitarbieterid müsste dir (sortiert) genau das recordset liefern was du brauchst.

wenn die abfrage gespeichert ist kannst du mit betterdataset darauf zugreifen wie eine tabelle.
:-D

karl der große 20. Mär 2005 22:06

Re: Master - Child - wie soll ich dies lösen
 
vielen dank :bounce2: :bounce2: :bounce2:

hat zwar etwas gedauert, aber jetzt hab ichs dank eurer hilfe

gruss karl


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:26 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-2025 by Thomas Breitkreuz