Announcement

Collapse
No announcement yet.

Strored Procedure für IB 6.0

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Strored Procedure für IB 6.0

    Hallo liebe Leute,
    es soll eine Auswertung aus meinen Delphiprogramm herraus gemacht
    werden. Deshalb möchte ich mittels einer Store Procedure eine
    Auswertung machen. Das Problem ist nur, daß ich dafür sehr viele
    Select´s benötige und somit die Auswertung sehr lange dauert. Kann mir
    hier vielleicht eine einfachen Weg zeigen, um einige Selects
    einzusparen.

    Als Server benutze ich eine INterbase6 Server und Delphi5

    Ich beschreibe mal einen Auszug aus meinen Tabelle:

    Tabelle: Auftrag
    benötigte Felder: AftZaehler, IDNL,
    IDAuftraege,Solltermin1,Solltermin2,Solltermin3,So lltermin4

    Tabelle: NL
    benötigte Felder: NLZaehler, NL Beschreibung

    Hier sind 8 Zeilen vorhanden. NL 1 - NL 8 mit dem Zaehler 1 -8. Der
    Zähler steht in IDNL der Tabelle 1 drin

    Tabelle: Teilauftraege
    benötigte Felder: Zaehler,IDAuftrag,Zeitbereich1,Zeitbereich2,Zeitbe reich3,Zeitbereich

    Bei IDAuftrag steht der AFTZaehler der Auftrag drin

    Meine Auswertung sollte nun so aussehen:

    Ich brauche eine Auswertung über die Zeit jeder einzelnen NL je
    Zeitbereich (es sind 8 Stück NL´s und 4 Zeitbereich)über das ganze
    Jahr. z.B NL1 KW 1 - 52, Zeitbereich 1,
    Zeitbereich2,Zeitbereich3,Zeitbereich4, NL2 KW 1-52, Zeitbereich 1,
    Zeitbereich2,Zeitbereich3,Zeitbereich4, usw bis zur 8. NL. (Die
    Gesamtzeit je Zeitbereich je Woche) Zu jedem Auftrag können eine
    Anzahl X (unbekannt) Teilauftraege vorhanden sein. Der Verknüpfung
    erfolgt über das Feld IDAuftrag, dort steht der Zaehler von
    Hauptauftrag drin. Die Zuordnung zu NL ist über das Feld IDNL zur
    Tabelle NL,NLZaehler realisiert. Die Solltermine für den Auftrag
    stehen in den Felder Solltermin1 - 4 drin. Dabei handelt es sich um
    eine Date Feld. Die Umrechnung dieses Termins zu KW habe ich schon mit
    einer External Function für Interbase Erledigt. Die Zeit Steht in der
    Feldern Zeitbereich1 - 4 drin. Es handelt sich dabei um ein Numeric
    18,2. Dies Minuten sind Industrieminuten und können somit einfach
    Summiert werden.

    Die Auswertung sollte nun einfach dieses machen. Summiere alle Zeiten
    der Tabelle Teilaufträge der Spalte Zeitbereich1, summiere alle Zeiten
    der Spalte Zeitbereich2, summiere alle Zeiten der Spalte Zeitbereich3,
    summiere alle Zeiten der Spalte Zeitbereich4, je Woche (die Woche
    ergibt sich aus der Tabelle Auftrag mit der Spalte Solltermin 1 für
    Zeitsumme1, Solltermin2 für Zeitsumme2 usw) je NL. die Nl ergibt sich
    aus der Tabelle NL oder IDNL der Tabelle Auftrag.

    Ich habe diese schon mehrfach versucht und bekomme es einfach nicht
    hin. Ich brauche für jeden Zeitbereichereich ein Select und das ganze
    8 mal (für jede NL 1 mal). Das sind dann schon mal 32 Select und Dauer
    eine ganze Weile.

    Kann mir jemand helfen und das ganze vereinfachen ?

    Vielen Danke schon mal im Voraus.

  • #2
    Hallo Tanja,

    wie gross ist die Auftragsdatei ?<br>

    Ein ähnliche Problem habe ich zweiteilig gelöst :<br>
    Über die Stundensätze pro Auftrag pro Mitarbeiter habe ich ein View in der Datenbank angelegt : Datum (oder KW), zeit von M1, zeit von M2 etc.

    Über eine Stored Procedure mit einer For-Next Schleife kommt die Antwort zum Client und wird einem dynamischen 3 D Array gespeichert (Datum,Mitarbeiter,Zeit).

    Das kann dann ruckzuck berechnent werden.

    Das System wird so schneller, da nur zwei select ( 1. View, 2. Procedure) ausgeführt werden. Die Summen-Berechnung mache ich auf dem Clienten, da ich sonst 20 Selects über die Mitarbeiter laufen lassen müsste.

    Mit 256 MB Speicher schaffe ich ca. 100000 Aufträge auf 20 Mitarbeiter auf 250 Tage in ca. 2 Minuten.

    Mit ein bischen Displayanimationen reicht das.

    Gruß Günte

    Comment


    • #3
      Hallo Günter,
      die Auftragsdatei hat ca 2500 Datensätze. Es kommen dieses Jahr bis Dezember so etwa 750 dazu. In die Tabelle mit dem Zeiten kommen je Monat ca. 500 Datensätze rein.

      Kannst Du mir dabei helfen eine View und eine Stored Procedure zu erzeugen. Mit Stored Proceduren kenne ich mich etwas aus. Aber mit Views habe ich noch nicht gemacht.

      Gerne können wir uns auch per Mail weitermachen, falls es hier nicht hingehört Danke Tanja

      Comment

      Working...
      X