AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbankfelder addieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbankfelder addieren

Ein Thema von svko · begonnen am 4. Dez 2009 · letzter Beitrag vom 9. Jan 2010
Antwort Antwort
Seite 3 von 3     123   
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#21

Re: Datenbankfelder addieren

  Alt 28. Dez 2009, 15:28
Hallo,

ist ja schon ein guter Anfang.

Mach mal bitte die Tabellen-Name fett (Namen markieren und oben links das B)

Leistungstabelle

Nummer(autoinc) OK

Datum wozu das denn ???

MasterId Integer -> RefKey auf Master.Id, damit ist das Feld Datum unnötig

Lv-Nummer 1-14 ???, also die OrderNo, OK
Bezeichnung
Einheit
Menge


Zitat:
Combobox deshalb, wenn der Polier das erste mal schreibt wird der Eintrag in einer
Stringlist gespeicher und steht beim nächtsten mal zur Auswahl.
Der Polier wird sich freuen, dass er das nicht immer eintippen muss.

Aber:
Wazu speichern
ein

Select Distinct(Leistungstabelle.Bezeichnung) beim Start des Forms und laden in eine StringList ist besser.
Die Daten sind dann nicht doppelt (DB, externe Datei).


Wo ist jetzt aber das Problem ?
Das Eintragen in die DB würde ich per Query selber zusammenbauen.
Das macht dann den Umstieg auf eine richtige DB (das kommt noch ... ) einfacher.

Die Komponente ist dann hier eine einfache TComboBox.


Zu der Abfrage
Zitat:
Summe Baustoffe und Summe leistung1, Summe Leistung2 usw pro Baustelle.
Du bekommst mit deinem Ansatz Baustelle = Verzeichnis (DB)
eh nur die Summe für genau eine Baustelle hin, etwa so

SQL-Code:
Select
  Sum(Leistungstabelle.Menge)
From
  Leistungstabelle
Group By
  Leistungstabelle.Bezeichnung

Heiko
Heiko
  Mit Zitat antworten Zitat
verkouter

Registriert seit: 29. Dez 2004
64 Beiträge
 
Delphi 2010 Architect
 
#22

Re: Datenbankfelder addieren

  Alt 7. Jan 2010, 17:57
Erst einmal, ein gesundes neues Jahr.

Ich muss gestehen,ich habe noch nie mit Query und sql gearbeitet, aber mit den Tipps mein
eigendliches Problem leicht lösen können.Ich habe allerdings keine Ahnung wie ich mit Query
die 14 Comboboxen füllen soll.Meine Formularseite stellt ein Tag im Bautagebuch dar, der
Polier blättert mit Dbnavigator durch dass Bautagebuch.
Miniaturansicht angehängter Grafiken
leistungen_290.jpg   bautagebuch_418.jpg  
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#23

Re: Datenbankfelder addieren

  Alt 8. Jan 2010, 07:44
Hallo,

du versteifst dich auf die Zahl 14.
Denke mal nach oben offen.

Mit meinem Ansatz (#21) kannst du so viele Leistungen anlegen/zuordnen,
wie du willst.

Die Anzeige der Leistungen eines Tages erfolgt am einfachsten
mit einer Query und einem DBGrid (oder mit einem normalen StringGrid).
Das Zuordnen ist jetzt aber aufwendiger.
Ich würde da gar kein TDBX-Dingens mehr nehmen, sondern 2 ListViews:

Links alle möglichen Leistungen, rechts die ausgewählten,
in der Mitte Pfeilbuttons zum Rüberschieben.

Wie sieht denn deine jetzige DB-Struktur aus ?.


Heiko
Heiko
  Mit Zitat antworten Zitat
verkouter

Registriert seit: 29. Dez 2004
64 Beiträge
 
Delphi 2010 Architect
 
#24

Re: Datenbankfelder addieren

  Alt 8. Jan 2010, 08:21
Die Datenbankstrucktur ist genau so gebleiben.Auf einen Tabsheet habe ich ein Query den
ich mit Hilfe Deines Tipps gefüllt habe.Das Datum steht deshalb in der Tabelle, weil die
Leistungstabelle nach einem Tatumsbereich gefiltert wird.Die 14 Felder resultiern aus dem
orginal Papierbautagebuch.

Delphi-Quellcode:
with Query.SQL do
begin
Clear;
Add('SELECT Nummer,Bezeichnung,Sum(Menge),Einheit');
Add('FROM Leistungen.DB');
Add('WHERE (Datum >= :date1) and (Datum <= :date2)');
Add('group by Nummer,bezeichnung,Einheit');
end;
Query.ParamByName('date1').Asdate := strtodate(filter1.Text);
Query.ParamByName('date2').Asdate := strtodate(filter2.Text);
Query.Open;
Ich kann kein Listview mit Leistungen füllen, weil ich die Leistungen vorher noch garnicht kenne.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#25

Re: Datenbankfelder addieren

  Alt 8. Jan 2010, 09:28
Hallo,

Zitat:
Ich kann kein Listview mit Leistungen füllen, weil ich die Leistungen vorher noch garnicht kenne.
Stimmt, das war freier Text.

Und wo ist jetzt das Problem ?



Heiko
Heiko
  Mit Zitat antworten Zitat
verkouter

Registriert seit: 29. Dez 2004
64 Beiträge
 
Delphi 2010 Architect
 
#26

Re: Datenbankfelder addieren

  Alt 8. Jan 2010, 19:54
Das Problem ist das ich in der Eingabemaske nicht mit DBgrid arbeiten möchte,sondern mit
dbcombobox oder combobox.Und dann die Datensätze eines Tages aus der Leistungs.db den
Comboboxen zuweisen muss.Wie gesagt habe ich noch nie mit Query gearbeitet.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#27

Re: Datenbankfelder addieren

  Alt 9. Jan 2010, 08:03
Hallo,

dann nimm eine normale ComboBox
und TTable zum Speichern.

Mit einer Query sind halt bestimmte Lesefunktionen (Select)
viele einfacher.



Heiko
Heiko
  Mit Zitat antworten Zitat
verkouter

Registriert seit: 29. Dez 2004
64 Beiträge
 
Delphi 2010 Architect
 
#28

Re: Datenbankfelder addieren

  Alt 9. Jan 2010, 14:28
Ich hatte echt keinen Plan wie ich die Zuordnung zu den einzelnen Comboboxen hinbekommen soll.
Bin jetzt wieder bei einer großen Tabelle und habe mit Query aus den 14 Spalten eine Tabelle gemacht.

Delphi-Quellcode:
with Query1.SQL do
begin
Clear;
Add('SELECT lvn1,be1,ein1,me1');
Add('FROM "' + Datei + '" ');
Add('union SELECT lvn2,be2,ein2,me2');
Add('FROM "' + Datei + '" ');
Add('union SELECT lvn3,be3,ein3,me3');
Add('FROM "' + Datei + '" ');
Add('union SELECT lvn4,be4,ein4,me4');
Add('FROM "' + Datei + '" ');
Add('union SELECT lvn5,be5,ein5,me5');
Add('FROM "' + Datei + '" ');
Add('union SELECT lvn6,be6,ein6,me6');
Add('FROM "' + Datei + '" ');
Add('union SELECT lvn7,be7,ein7,me7');
Add('FROM "' + Datei + '" ');
Add('union SELECT lvn8,be8,ein8,me8');
Add('FROM "' + Datei + '" ');
Add('union SELECT lvn9,be9,ein9,me9');
Add('FROM "' + Datei + '" ');
Add('union SELECT lvn10,be10,ein10,me10');
Add('FROM "' + Datei + '" ');
Add('union SELECT lvn11,be11,ein11,me11');
Add('FROM "' + Datei + '" ');
Add('union SELECT lvn12,be12,ein12,me12');
Add('FROM "' + Datei + '" ');
Add('union SELECT lvn13,be13,ein13,me13');
Add('FROM "' + Datei + '" ');
Add('union SELECT lvn14,be14,ein14,me14');
Add('FROM "' + Datei + '" ');
Um jetzt Sum(Menge) und Group by zu realisieren, muss ich noch ein Query erstellen???
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#29

Re: Datenbankfelder addieren

  Alt 9. Jan 2010, 15:16
Hallo,

ich hatte ja gesagt, dass du die Struktur umstellen sollst.
Kommt ketzt noch ne le15 dazu, fängst du an verschiedenen Stellen an,
rumzubauen.
Auch wenn der Kunde sagt, wir haben nur 14, kann das morgen ganz anders sein.

So wie du es jetzt hast, ginge viell. ein SubSelect
(war das Paradox ?, dann ist das extrem lahm, wenn es überhaupt geht).

Oder du lädst das alles lokal in eigene Listen und rechnest das selber aus.


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 19:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz