+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

LL20: Gantt Diagramm erstellen


(Nikolaus Kern) #1

Hallo,

unter <externer Link wurde entfernt, siehe http://www.combit.net/Foren-Regeln> gibt es die detaillierte Beschreibung mit Screenshots.

Zwei Select Statements werden dem Report als Datenquelle zugewiesen:
fbData := DbCommandSetDataProvider{}
fbData:MinimalSelect := .F.
fbData:AddCommand(SELF:GetMaschinen() , “Maschinen”, BauradarGlobals.firebirdDF, BauradarGlobals.firebirdMF)
fbData:AddCommand(SELF:GetMaschinenPlanung() , “Maschinenplanung”, BauradarGlobals.firebirdDF, BauradarGlobals.firebirdMF)

fbData:AddRelation( “Maschinen2Einteilung”, “Maschinen”, “Maschinenplanung”, “RES_ID”, “RES_ID”)

SELF:_report := ListLabel{}
SELF:_report:LicensingInfo := SELF:_licenseKey
SELF:_report:AutoProjectFile := SELF:_reportName
SELF:_report:DataSource := fbData

Die erste Query „Maschinen“ ist ein einfaches SQL Statment:
SELECT RES_ID, RESSOURCEN_NAME FROM RESSOURCEN WHERE RESSOURCEN_TYP = ‘Maschine’
Die zweite Query „Maschinenplanung“ hat einen einfachen Aufruf:
SELECT RES_ID, RESSOURCEN_NAME, BAUSTELLEN_BEZEICHNUNG, ARBEITSEINTEILUNG_START, ARBEITSEINTEILUNG_STOP, RED, GREEN, BLUE, RED, ORGANISATIONSEINHEIT, BAUSTELLE, TAGE FROM REPORT_CR12(‘5.10.2015’, ‘31.12.2015’, NULL, NULL, ‘Maschine’, NULL) ORDER BY RESSOURCEN_NAME, RES_ID, ARBEITSEINTEILUNG_START"
Dahinter steckt eine umfangreiche Stored Procedure, mit der die Daten aufbereitet werden. Die Felder RES_ID sind in beiden Abfragen vorhanden und sollen als Key für die Verbindung verwendet werden.

Die zentralen Fragen sind:
• Wie müssen die Datenquellen für LL vorbereitet sein, damit zwei unterschiedlichen Tabellen mit unterschiedlichen Feldnamen für ein Gantt Diagramm mit Sammelvorgang und Vorgang verbunden werden können.
• Gibt es Beschränkungen bei der Verwendung von Stored Procedures als Datenquelle
• Sollen die Daten mit anderen DataProvidern aufbereitet werden?

So bin ich bisher vorgegangen:

  1. Datenquelle am Bericht auswählen
  2. Felder zuordnen
  3. Fehlermeldung bekommen

Was ich erstellen will, soll in etwa so aussehen:
• Sammelvorgang = Maschine
• Vorgang = Eingeteilte Baustelle

Das ist das Maximum, das ich bisher erreichen kann, ist eine Gantt mit Vorgangszeilen (in etwa wie das pollen Beispiel).

PS: Was hat es genau mit dem Datei(en) anhängen auf sich? Welche Formate sind zu gelassen?

MfG

Nikolaus Kern


(Oliver Hambrecht) #2

Von der Idee her hört es sich nicht so schlecht an… könnte/sollte so bereits funktionieren. Spezielle Einschränkungen in Sachen Stored Procedures sind mir keine bekannt… in der Dokumentation dazu habe ich auf die Schnelle auch nichts dazu gefunden. Lediglich die Eigenschaft “MinimalSelect” kann hier ggf. mit Stored Procedures nicht sinnvoll umgehen, so dass diese wohl nicht berücksichtigt werden würde.

Da hier für das Gantt eine 1:N Relation verwendet verwendet werden soll, würde ich bereits bei der Auswahl der Datenquelle bereits die “Untertabelle” selektieren - wenn ich das aus dem
Code richtig deute, müsste das ‘Maschinenplanung [Maschinen2Einteilung]’ sein. Wichtig ist hierbei aber dann, dass die Tabelle bereits korrekt sortiert sein muss. Als Sammelvorgang würde ich
dann “Maschinen.RESSOURCEN_NAME” verwenden und als Vorgangsname dann “Maschinenplanung.BAUSTELLEN_BEZEICHNUNG” oder so. Dadurch, dass die Relation an LL angemeldet wurde und als Datenquelle auch die Untertabelle für das Gantt verwendet wurde, müsste LL die Datenzuordnung kennen.

Habe versucht das auch mal schnell mit den in LL mitgelieferten Beispielen zu simulieren… wenn man in der Beispielanwendung als Datenquelle “Orders” (Untertabelle von “Customers”) verwendet und für den Sammelvorgang ‘Customers.ID’ einträgt und als Vorgangsnamen ‘str$(Orders.OrderId, 0, 0)’ und für Beginn und Ende die Felder ‘Orders.OrderDate’ und ‘Orders.ShippedDate’ verwendet sieht es ganz gut aus, so dass ein Gantt über eine 1:N Relation prinzipiell mit LL funktionieren sollte.

Wenn das nicht helfen sollte oder die zündende Idee bringt, würde ich vorschlagen sonst einmal den Support bei combit hierzu zu bemühen.