![]() |
Re: Datenbankfelder addieren
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:
Aber: Wazu speichern ein
SQL-Code:
beim Start des Forms und laden in eine StringList ist besser.
Select Distinct(Leistungstabelle.Bezeichnung)
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:
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 |
Re: Datenbankfelder addieren
Liste der Anhänge anzeigen (Anzahl: 2)
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. |
Re: Datenbankfelder addieren
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 |
Re: Datenbankfelder addieren
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:
Ich kann kein Listview mit Leistungen füllen, weil ich die Leistungen vorher noch garnicht kenne.
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; |
Re: Datenbankfelder addieren
Hallo,
Zitat:
Und wo ist jetzt das Problem ? Heiko |
Re: Datenbankfelder addieren
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. |
Re: Datenbankfelder addieren
Hallo,
dann nimm eine normale ComboBox und TTable zum Speichern. Mit einer Query sind halt bestimmte Lesefunktionen (Select) viele einfacher. Heiko |
Re: Datenbankfelder addieren
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:
Um jetzt Sum(Menge) und Group by zu realisieren, muss ich noch ein Query erstellen???
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 + '" '); |
Re: Datenbankfelder addieren
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:58 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 by Thomas Breitkreuz