AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Rein "Informative" Spalte in DBGrid einfügen
Thema durchsuchen
Ansicht
Themen-Optionen

Rein "Informative" Spalte in DBGrid einfügen

Ein Thema von Headbucket · begonnen am 11. Feb 2015 · letzter Beitrag vom 12. Feb 2015
 
Headbucket

Registriert seit: 12. Dez 2013
Ort: Dresden
172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Rein "Informative" Spalte in DBGrid einfügen

  Alt 11. Feb 2015, 13:29
Datenbank: MSSQL • Version: 12.0.2000.8 • Zugriff über: Delphi (ADO)
Hallo,

auf die Gefahr hin, dass ich mich mit der Frage total zum Deppen mache, muss ich sie nun trotzdem stellen. Bis vor einer Woche hatte ich jedoch noch nie etwas mit Datenbanken zu tun.

Um mein Problem zu erklären folgendes Beispiel:
Ich habe zwei Tabellen. Eine Protokolltabelle und eine Dateitabelle. In der Dateitabelle befinden sich Dateien, welche stets einem Eintrag in der Protokolltabelle zugewiesen werden können. Es können auch mehrere Dateien einem Protokolleintrag zugeordnet werden.

Nun habe ich ein DBGrid, welches mit einer TDataSource verbunden ist, welche wiederrum mit einem TADOQuery verbunden ist. Soweit - sogut.
Mit dem Query rufe ich nun einige Spalten der Protokolltabelle über SELECT auf. Nun möchte ich jedoch auch in einer zusätzlichen Spalte anzeigen, wieviel Dateien dieser Protokolleintrag enthält. Diese Spalte ist natürlich rein informativ und darf auch nicht editiert werden, wobei die anderen Zelle natürlich editiert werden dürfen.

Eine weitere Spalte kann ich natürlich problemlos mit
Delphi-Quellcode:
DBGrid.Columns.Add;
DBGrid.Columns[DBGrid.Columns.Count - 1].FieldName := 'Anzahl';
hinzufügen. Ich weiß nun aber leider nicht, wie ich die Anzahl in die Spalte "Anzahl" bekomme. Eine separate Abfrage ist ja auch kein Problem:
Code:
SELECT Count(fID) as 'Anzahl' FROM tFiles WHERE fExtID = '23'
Mit dieser Abfrage erhalte ich die Anzahl der Dateien für den Protokolleintrag mit der ID "23".
Meine Abfrage für die Protokolleinträge:
Code:
SELECT fDies, fUnd, fDas FROM tProtokoll WHERE tProtokoll.fOffen = '1'
Meine Hoffnung war, dass ich diese beiden Abfragen nun irgendwie zusammenpacken kann. Wenn es aber einen Weg gibt, die Anzahl manuell in die Spalten zu schreiben, dass wäre das auch eine Lösung für mich.

Ich habe bereits folgendes versucht:
Code:
SELECT fDies, fUnd, fDas, Count(fID) as 'Anzahl' FROM tProtokoll WHERE tProtokoll.fOffen = '1'
Jedoch kann ich für das "Count(fID)" ja dann keinen Filter festlegen. Das geht ja irgendwie nicht. Wenn ich keinen Filter festlege (was ja aber auch unsinnig ist) erhalte ich außerdem folgende Fehlermeldung: "Die tProtokoll.fID-Spalte ist in der Auswahlliste ungültig, da sie nicht in einer Aggregatfunktion und nicht in der GROUP BY-Klausel enthalten ist"

Grüße und schonmal besten Dank
Headbucket

Geändert von Headbucket (11. Feb 2015 um 13:34 Uhr)
  Mit Zitat antworten Zitat
 


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 22:11 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