Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbankfelder addieren (https://www.delphipraxis.net/144304-datenbankfelder-addieren.html)

haentschman 5. Dez 2009 23:49

Re: Datenbankfelder addieren
 
Zitat:

Wie aber zeige ich 14 Datensätze in meinen Formular an, das für einen Tag nur einen Datensatz nutzt.
nicht für jeden Tag einen Datensatz, für jede Leistung einen Datensatz. Das würde bedeuten, daß du für jeden Tag 14 Datensätze ablegst. Beim lesen würdest du pro Datum in der Ergebnismenge 14 Datensätze erhalten welche du dann in deinen Formularfelder anzeigen kannst.
Ergänzung: Oder nur die ausgefüllten Reihen speichern und entsprechend von oben nach unten wieder eintragen.

Zum Thema Summe: Wenn du die Leistungen einzeln speicherst ist es ein leichtes über SQL auch die entsprechenden Summen zu berechnen.

PS: mir würden zu dem Projekt spontan 5 Tabellen einfallen. Welche hast du ?

hoika 7. Dez 2009 15:38

Re: Datenbankfelder addieren
 
Hallo,

1. Arbeits-Tabelle (wie bisher)

Arbeits-Id AutoInc
Arbeits-Datum

2. Tabelle für mögliche Leistungen, nur Namen, keine Dopplungen
- Schachtarbeiten
- Maurerarbeiten

Leistungs-Id AutoInc
Leistungs-Name

3. Zuordnung der Leistungen zu einem Eintrag in Tabelle 1

Id AutoInc
Arbeits-Id Integer
Leistungs-Id Integer
Menge Float
OrderNo Integer // zur Sortierung oder Numerierung


Ausserdem würde ich schleunigst weg von Paradox.

Noch eine Entscheidungs-Hilfe.
Was für einen Aufwand bedeutet es,
das Programm von 14 auf 15 Leistungen umzubauen ?

Bei meiner Struktur gar keinen.


Heiko

verkouter 28. Dez 2009 13:17

Re: Datenbankfelder addieren
 
So, dass hat jetzt eine ganze Weile gedauert, aber ich habe jetzt die große Datenbank in 3 kleine
zerpflückt.Eine dient als Mastersource und das Datum als Masterfield. Die Geschichte funktioniert
mit DBGrid auch sehr gut, nur habe ich keine Ahnung wie ich 14 DBcomboboxen die Werte aus der
Leistungsdatenbank zuweise.

hoika 28. Dez 2009 13:27

Re: Datenbankfelder addieren
 
Hallo,

du schreibst immer Datenbanken, meinst aber Tabellen.
So dass musste ich mal loswerden ;)

Durch das "Auseinanderpflücken" geht das gar nicht mehr so "einfach".

Ich würde dafür ein eigenes Form nehmen

links - alle möglichen Bauleistungen (in einem ListView, was du selber füllst per Query)
rechts - ausgewählte
Mitte - Button(s) zum Hin- und Rüberklicken

Mit OK schreibst du die ausgewählten Leistungen in die hoff.
jetzt existierende "Leistung - Arbeit" - Tabelle.
Vorher wird noch geprüft, ob der Eintrag nicht schon existiert.
Einfacher ist es, einfach auf Verdacht alle Leistungen der aktuellen Arbeit zu löschen
Das Feld OrderNo stellt die Reihenfolge sicher.


Heiko

omata 28. Dez 2009 13:28

Re: Datenbankfelder addieren
 
Zitat:

Zitat von verkouter
...ich habe jetzt die große Datenbank in 3 kleine zerpflückt...

Es gibt einen Unterschied zwischen Datenbank und Tabelle. Vermutlich meinst du hier Tabelle und nicht Datenbank.

verkouter 28. Dez 2009 13:39

Re: Datenbankfelder addieren
 
Das Formular, siehe Screenshot sollte schon so erhalten bleiben.
Die Leistungen kann ich nicht vorgeben. Für jeden Baustelle gib es vom Auftraggeber ein
Angebotsschreiben in dem Leistungen stehen. Es gäbe alse viele hundert verschiedene Bauleistungen.

hoika 28. Dez 2009 13:56

Re: Datenbankfelder addieren
 
Hallo,

Dann zeige uns doch erst mal deine jetzige Datenbank-Struktur.

Zitat:

Die Leistungen kann ich nicht vorgeben. Für jeden Baustelle gib es vom Auftraggeber ein
Dann ist das freier Text ? -> TDBEdit


Ich hoffe, du legst jetzt nicht für jede Baustelle
ein Verzeichnis (=Datenbank) an ...


Heiko

verkouter 28. Dez 2009 14:15

Re: Datenbankfelder addieren
 
Doch es wird für jede Baustelle ein Ordner angelegt, da die Bautagebücher auf der Baustelle
geschrieben werden und wenn die Baustelle fertig ist ins Büro sollen.In der Mastertabelle werden
Datum,Kalenderwoche(es soll KW weise gefiltert werden und Wochenleistung errechnet werden),die
Arbeitsstunden pro Tag,die Geräte die in Einsatz kommen.In der Leistungstabelle wird Datum,
Leistungsbezeichnung,Einheit und Menge gespeichert.Und in der Baustofftabelle das Datum,
Baustoffeingang,Einheit und Menge. Ziel des ganzen ist ein zweites Formular auf dem (je nach
KW-Filter )der Baustoffeingang gesammt und die einzelnen Leistungen addiert ausgeben werden.

hoika 28. Dez 2009 14:51

Re: Datenbankfelder addieren
 
Hallo,

habe ich immer noch nicht richtig verstanden ;)

- geg: pro Baustelle eine DB (=Verzeichnis in Pdx)
- ges: Summe X über alle Baustellen ?

- Lösung: geht nicht

Andere Frage:
Warum ComboBoxen bei den Bauleistungen ?

Oder anders:
Woher weisst du, welche Bauleistungen pro Baustelle möglich sind ?


Zeig doch mal deine jetzige DB-Struktur und zwar bitte so wie z.B. bei #12
(also nicht so viel Text)


Heiko

verkouter 28. Dez 2009 15:18

Re: Datenbankfelder addieren
 
Nein, Summe Baustoffe und Summe leistung1, Summe Leistung2 usw pro Baustelle.

Datenstrucktur


Mastertabelle

Nummer(autoinc)
Datum
Kalenderwoche
6mal für mögliche Geräte
Arbeitsdtunden

Leistungstabelle

Nummer(autoinc)
Datum
Lv-Nummer
Bezeichnung
Einheit
Mennge

Baustofftabelle

Nummer(autoinc)
Datum
Bezeichnung
Einheit
Menge


Die Leistungsbezeichnung kenne ich garnicht, die trägt erst der Polier vor Ort ein.

Combobox deshalb, wenn der Polier das erste mal schreibt wird der Eintrag in einer
Stringlist gespeicher und steht beim nächtsten mal zur Auswahl.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:45 Uhr.
Seite 2 von 3     12 3      

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