dbgrid zeigt leere Zeile wenn keine Datensätze vorhanden sin

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
leveltwo
Beiträge: 34
Registriert: Mi 14. Okt 2015, 09:58

dbgrid zeigt leere Zeile wenn keine Datensätze vorhanden sin

Beitrag von leveltwo »

Moin bei meiem Programm gibt es Tabellen und untertabellen die teilweise keine Datensätze enthalten in dem Fall zeigt das Grid eine komplett leere Zeile an.
Der user wählt diese Zeile mit einem Doppelklick aus wenn eer dort einen neuen Datensatz anlegen soll das funktioniert aber nicht weil mit einem Doppelklick normalerweise Datensätze bearbeitet werden und nicht hinzugefügt.
Wie kann ich verhindern das mein Grid überhaupt eine Zeile anzeigt wenn keine Datensätze vorhanden sind??

Christian
Lazarusforum e. V.
Beiträge: 6092
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: dbgrid zeigt leere Zeile wenn keine Datensätze vorhanden

Beitrag von Christian »

Bau dir ein eigenes Grid. Das DBgrid verhält sich so wie sich DBGrids seit Delphi 1.0 verhalten. Das ist an einigen Stellen anders als sich z.b. Excel verhält. Aber da gibt es sowiso kein Applikationsübergreifendes "Normverhalten"
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Bernie110
Beiträge: 80
Registriert: Mo 10. Feb 2020, 17:43

Re: dbgrid zeigt leere Zeile wenn keine Datensätze vorhanden sin

Beitrag von Bernie110 »

Hallo, ich pack mal den alten Fred aus.
Gibt es da eine Lösung ?
Die Antwort hier hilft mir persönlich leider nicht weiter :-)

Lg Bernie

Epcop
Beiträge: 94
Registriert: Di 29. Mai 2012, 09:36

Re: dbgrid zeigt leere Zeile wenn keine Datensätze vorhanden sin

Beitrag von Epcop »

Bernie110 hat geschrieben:
Di 30. Jun 2020, 16:16
Hallo, ich pack mal den alten Fred aus.
Gibt es da eine Lösung ?
Die Antwort hier hilft mir persönlich leider nicht weiter :-)

Lg Bernie
Mit einem Stringgrid die Datensätze selbst einlesen? :-)
Macht mehr Arbeit als dbgrid, aber es macht was es soll.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 587
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Winux (L 2.0.7 FPC 3.04)
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: dbgrid zeigt leere Zeile wenn keine Datensätze vorhanden sin

Beitrag von fliegermichl »

Oder wesentlich flexibler und schneller den VirtualStringTree verwenden.

wp_xyz
Beiträge: 3257
Registriert: Fr 8. Apr 2011, 09:01

Re: dbgrid zeigt leere Zeile wenn keine Datensätze vorhanden sin

Beitrag von wp_xyz »

leveltwo hat geschrieben:
Do 24. Nov 2016, 14:27
Moin bei meiem Programm gibt es Tabellen und untertabellen die teilweise keine Datensätze enthalten in dem Fall zeigt das Grid eine komplett leere Zeile an.
Der user wählt diese Zeile mit einem Doppelklick aus wenn eer dort einen neuen Datensatz anlegen soll das funktioniert aber nicht weil mit einem Doppelklick normalerweise Datensätze bearbeitet werden und nicht hinzugefügt.
Versteh ich nicht. Das DBGrid hat gar kein Verhalten bei einem Doppelklick vorgegeben, es wird nur der einfache Click ausgewertet, und der bringt die geklickte Zelle in den Edit-Modus. Das bedeutet: wenn es noch gar keine Datensätze gibt, so wird es dir ermöglicht, mit Hilfe der leeren Zeile neue Daten direkt ins Grid einzugeben. Daher sehe ich keinen Grund, dass die leere Zeile fehl am Platz wäre.

Ich denke das Problem, das du schilderst, steckt in deinem Programm selbst, nicht im DBGrid. Bitte zeige mehr Code, was du genau machst, am besten als selbständiges kleines Demo-Programm.

Bernie110
Beiträge: 80
Registriert: Mo 10. Feb 2020, 17:43

Re: dbgrid zeigt leere Zeile wenn keine Datensätze vorhanden sin

Beitrag von Bernie110 »

wp_xyz hat geschrieben:
Mi 1. Jul 2020, 11:17
wenn es noch gar keine Datensätze gibt, so wird es dir ermöglicht, mit Hilfe der leeren Zeile neue Daten direkt ins Grid einzugeben. Daher sehe ich keinen Grund, dass die leere Zeile fehl am Platz wäre.

Ich denke das Problem, das du schilderst, steckt in deinem Programm selbst, nicht im DBGrid. Bitte zeige mehr Code, was du genau machst, am besten als selbständiges kleines Demo-Programm.
Hi, ich denke er macht das Gleiche wie ich es mache.
Das DBGrid dient eigentlich nur zur tabellarischen Ansicht. ReadOnly = True.
und wird durch eine SQl Abfrage befüllt :

Code: Alles auswählen

      SQLQuery2.close;
      SQLQuery2.SQL.Clear;
      SQLQuery2.SQL.Add('select * from v_DT_PACKST_ERFASSUNG_ZUSAM_SNDG_STATUS_ALLE where SNDG_ID = '''+SNDG_ID.text+''' ORDER BY LT_ID;');
      SQLQuery2.open; 
Die Daten basieren bereits auf SQL Sichten die auch nicht editierbar sind.

Liefert das Abfrage Ergebnis ( bei Filterung ) z.B. keinen Wert weil SNDG_ID <> SNDG_ID.text, dann erscheint im DBGrid eine leere Zeile.

Ich öffne auch über zb: DBGrid1DblClick andere Formulare die auf die Daten der Abfrage basieren.
Einen Fehler fange ich momentan so ab, dass ich die Zeilen des DBGrids auf Inhalt überprüfe.
Einfacher wäre es halt wenn diese leere Zeile gar nicht da wäre.

Gruss Bernie

TraumTaenzerDieter
Beiträge: 23
Registriert: So 14. Aug 2011, 09:11

Re: dbgrid zeigt leere Zeile wenn keine Datensätze vorhanden sin

Beitrag von TraumTaenzerDieter »

Wenn ich keine Leerzeile in einer DBGrid haben will,
dann schließe ich einfach die zugehörige Query.

Bernie110
Beiträge: 80
Registriert: Mo 10. Feb 2020, 17:43

Re: dbgrid zeigt leere Zeile wenn keine Datensätze vorhanden sin

Beitrag von Bernie110 »

TraumTaenzerDieter hat geschrieben:
Mi 1. Jul 2020, 16:11
Wenn ich keine Leerzeile in einer DBGrid haben will,
dann schließe ich einfach die zugehörige Query.
Hi hm auch ne Idee. Du fragst also ab ob Inhalt da ist und wenn nicht setzt du ein Close ?
Lg Bernie

edit ... musste ich schnell ausprobieren. klar funktioniert einwandfrei..genau so hatte ich mir das vorgestellt !! Danke !!

Antworten