Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBGrid Anzahl der Reihen (https://www.delphipraxis.net/119589-dbgrid-anzahl-der-reihen.html)

Thomm 28. Aug 2008 19:15

Datenbank: MyBase • Version: ?? • Zugriff über: ClientDataSet

DBGrid Anzahl der Reihen
 
Ich möchte die Anzahl der Reihen in einem DBGrid , nicht der Spalten, festlegen.

Ich habe eine Datenbank MyBase auf die ich mit ClientDataSet1 zugreife.

Bei TStringGrid heißt es glaub ich
Delphi-Quellcode:
StringGrid1.RowCount:= 10
Wie macht man das bei einem DBGrid ? ? ?

mkinzler 28. Aug 2008 19:18

Re: DBGrid Anzahl der Reihen
 
Du die Höhe des Grids und die Spaltenhöhe

Thomm 28. Aug 2008 19:26

Re: DBGrid Anzahl der Reihen
 
Nein, ich meine nicht die Spaltenhöhe, sondern die Anzahl der Reihen im DBGrid

Wie kann man die festlegen ?

Chemiker 28. Aug 2008 19:42

Re: DBGrid Anzahl der Reihen
 
Hallo Thomm,

warum willst Du die Anzeige beschränken. Grundsätzlich werden erst mal alle Datensätze angezeigt. Meiner Meinung macht es doch nur Sinn, die Datensätze zu beschränken z.B. mit einem Filter(ich will alle Kunden in Bonn sehen).
Wenn es tatsächlich nur die eine bestimmte Anzahl sein sollen, so schieb dir doch das DBGrid auf die Anzahl zu Recht, so das Du nur 5 Zeilen angezeigt werden.

Bis bald Chemiker

Thomm 28. Aug 2008 19:48

Re: DBGrid Anzahl der Reihen
 
Zitat:

Zitat von Chemiker
Hallo Thomm,

warum willst Du die Anzeige beschränken. Grundsätzlich werden erst mal alle Datensätze angezeigt. Meiner Meinung macht es doch nur Sinn, die Datensätze zu beschränken z.B. mit einem Filter(ich will alle Kunden in Bonn sehen).
Wenn es tatsächlich nur die eine bestimmte Anzahl sein sollen, so schieb dir doch das DBGrid auf die Anzahl zu Recht, so das Du nur 5 Zeilen angezeigt werden.

Bis bald Chemiker

Hallo, Chemiker,

wenn ich mein Programm öffne, dann hat das DBGrid nur 1 Reihe , weil die Datenbank noch leer ist ,
daher wollte ich die Anzahl der Reihen auf 20 oder 30 Reihen erhöhen, ich finde aber keine Einstellung wie man das eingeben kann.
Wisst ihr wie man das macht ?
Bei TStringGrid kann man das ganz einfach mit
Delphi-Quellcode:
StringGrid.RowCount := 20;

mkinzler 28. Aug 2008 19:50

Re: DBGrid Anzahl der Reihen
 
(Gesamthöhe-Kopfhöhe-Fusshöhe)/Zeilenhöhe = Anzahl Zeilen
Zitat:

wenn ich mein Programm öffne, dann hat das DBGrid nur 1 Reihe , weil die Datenbank noch leer ist ,
daher wollte ich die Anzahl der Reihen auf 20 oder 30 Reihen erhöhen, ich finde aber keine Einstellung wie man das eingeben kann.
Wisst ihr wie man das macht ?
Der einzige Weg wäre es Leerzeilen in die Ergebnismenge einzufügen, ist aber imho eine schlechte Idee

grenzgaenger 28. Aug 2008 19:53

Re: DBGrid Anzahl der Reihen
 
warum nimmste nicht 'n solides stringgrid und füllst deine daten per hand ein?

da hast du doch viel mehr möglichkeiten :-)

Thomm 28. Aug 2008 19:54

Re: DBGrid Anzahl der Reihen
 
Zitat:

Zitat von mkinzler
(Gesamthöhe-Kopfhöhe-Fusshöhe)/Zeilenhöhe = Anzahl Zeilen
Zitat:

wenn ich mein Programm öffne, dann hat das DBGrid nur 1 Reihe , weil die Datenbank noch leer ist ,
daher wollte ich die Anzahl der Reihen auf 20 oder 30 Reihen erhöhen, ich finde aber keine Einstellung wie man das eingeben kann.
Wisst ihr wie man das macht ?
Der einzige Weg wäre es Leerzeilen in die Ergebnismenge einzufügen, ist aber imho eine schlechte Idee

Ich glaub, dann nehm ich lieber normales TStringGrid, oder ?

Chemiker 28. Aug 2008 19:56

Re: DBGrid Anzahl der Reihen
 
Hallo Thomm,

Die Anzahl der Zeilen wird von der Anzahl an Datensätze vorgegeben.
Das bedeutet im Deinen Fall 20-30 leere Datensätze anlegen und dann das DBGrid anzuzeigen.

Bis bald Chemiker

mkinzler 28. Aug 2008 19:59

Re: DBGrid Anzahl der Reihen
 
Warum willst du den nicht vorhandene Datensätze anzeigen?

grenzgaenger 28. Aug 2008 20:08

Re: DBGrid Anzahl der Reihen
 
Zitat:

Zitat von Thomm
Ich glaub, dann nehm ich lieber normales TStringGrid, oder ?

das ist keine schlechte idee :-)

Thomm 28. Aug 2008 20:15

Re: DBGrid Anzahl der Reihen
 
Zitat:

Zitat von mkinzler
Warum willst du den nicht vorhandene Datensätze anzeigen?

Mein Fahrtenbuch ist doch am Anfang noch leer (Keine Einträge)

Daher hat man am Anfang ein großes weißes Feld mit nur einer Reihe,

ich dachte man könnte irgendwie mehrere Reihen anlegen.

Ich nehme lieber ein TStringGrid, da ich nur eine sehr kleine Datenbank habe,

genügt das , glaube ich, oder ?

mkinzler 28. Aug 2008 20:17

Re: DBGrid Anzahl der Reihen
 
Oder du übernimmst selber das Zeichnen

grenzgaenger 28. Aug 2008 20:23

Re: DBGrid Anzahl der Reihen
 
was spricht gegen ein stringgrid?

da gibts einen arbeitsbereich, in dem er seine daten einträgt. nach bestätigung werden die in die DB und ins grid eingetragen. bei selektion im grid, können diese dann bearbeitet oder gelöscht werden... ansonsten angezeigt, sortiert und gefiltert...

ausserdem kann ganz ohne persistente felder, zusätzliche informationen angezeigt werden, wie z.b. kosten je kilometer (inkl. abschreibung, benzin und wartung), kosten des Chauffeurs je kilometer und alles was er sonst noch sinnvoll findet :roll:

mkinzler 28. Aug 2008 20:26

Re: DBGrid Anzahl der Reihen
 
Das Handling von Daten in einem Stringgrid ist etwas komplexer. Dadurch hat man das Verhalten aber in der eigenen Hand.

Thomm 28. Aug 2008 20:28

Re: DBGrid Anzahl der Reihen
 
Zitat:

Zitat von grenzgaenger
was spricht gegen ein stringgrid?

da gibts einen arbeitsbereich, in dem er seine daten einträgt. nach bestätigung werden die in die DB und ins grid eingetragen. bei selektion im grid, können diese dann bearbeitet oder gelöscht werden... ansonsten angezeigt, sortiert und gefiltert...

ausserdem kann ganz ohne persistente felder, zusätzliche informationen angezeigt werden, wie z.b. kosten je kilometer (inkl. abschreibung, benzin und wartung), kosten des Chauffeurs je kilometer und alles was er sonst noch sinnvoll findet :roll:

Aber wie verbinde ich TStringGrid mit der Datenbank ?

Ich dachte immer das geht nur mit DBGrid ?

mkinzler 28. Aug 2008 20:31

Re: DBGrid Anzahl der Reihen
 
Verbinden kannst du diese Nicht, aber den Inhalt des DataSets mit dem des StringGrids synchronisieren

grenzgaenger 28. Aug 2008 20:33

Re: DBGrid Anzahl der Reihen
 
mit der hand 8)

ich verwend hier zu eine TObjectList, die ich mit den objekten füttere ... z.b. beim lesen... oder beim bearbeiten... ausserdem bekommt meine objectlist eine methode save, wie auch die jeweiligen objekte... wenn die methode aufgerufen wird, wird die objectlist abgearbeitet und für jedes objekt in der liste, die methode save aufgerufen. dort, ist dann der code, damit sich das objekt speichern kann ...

aber MKinzler hat recht, ist etwas aufwendiger, als zwei kompos auf den bildschirm zu ziehen und zwei properties zusammenzuklicken... dafür hast du auch die kontrolle, über alles :-)

Thomm 28. Aug 2008 20:39

Re: DBGrid Anzahl der Reihen
 
Ich glaube nicht, dass ich das hinbekomme. :shock:

Zu kompliziert :shock:

Ich könnte eine TStringList anlegen in die die Daten aufgezeichnet werden,

und dann in einer Textdatei abgespeichert werden, das bekomm ich hin.

mkinzler 28. Aug 2008 20:41

Re: DBGrid Anzahl der Reihen
 
Und was ist das Problem? Und warum ist es schlimm, das bei einem leeren Fahrtenbuch keine Einträge zu sehen sind?

Thomm 28. Aug 2008 20:43

Re: DBGrid Anzahl der Reihen
 
Zitat:

Zitat von mkinzler
Und was ist das Problem? Und warum ist es schlimm, das bei einem leeren Fahrtenbuch keine Einträge zu sehen sind?

Stimmt schon

Eigentlich ist das doch egal, Hauptsache es funktioniert.

Dachte nur man kann das optisch etwas verbessern

sx2008 28. Aug 2008 20:44

Re: DBGrid Anzahl der Reihen
 
Zitat:

Zitat von grenzgaenger
Zitat:

Zitat von Thomm
Ich glaub, dann nehm ich lieber normales TStringGrid, oder ?

das ist keine schlechte idee :-)

Das bin ich eher anderer Meinung.
In ungefähr 2 Minuten kann man ein DBGrid, eine Query, Datasource und ein DBNavigator auf ein Formular klatschen
und kann sofort die Daten anzeigen und editieren.
Sogar zu Entwicklungszeit kann man die Live-Daten sehen; das ist wirklich beeindruckend.

Das bekommt jeder Anfänger hin und das ist unter anderem auch das Tolle an Delphi,
dass es so einfach ist, mal kurz ein paar Komponenten auf ein Formular zu setzen und schon zappelt es.
Gerade im Bereich Datenbanken hat Dephi ja seine Stärken (wenn auch VS inzwischen auf-/überholt hat).

Diese Einfachheit würde man einfach so wegwerfen, wenn man mit einem Stringgrid als DBGrid-Ersatz arbeitet.
Für den Austausch DBGrid -> StringGrid ist stundenlange Arbeit erforderlich.
Danach ist das Formular aufgeblasen mit Code, der sich nur um das StringGrid und wie die Daten rein und rauskommen dreht.
Nichts Produktives wurde programmiert!

Es mag Fälle geben (3-Tier-Anwendungen) bei denen ein StringGrid der Ersatz für ein DBGrid ist,
aber bei einem normalen Programm wäre das schlichtweg eine Arbeitsbeschaffungsmaßnahme.

@Thomm:
Datenbanken sind dazu da Daten zu speichern.
Du möchtest leere Zeilen speichern; das macht aber keinen Sinn.
Wenn du die Anzahl der Zeilen beschränken willst, dann ist das natürlich etwas anderes.
SQL-Code:
SELECT TOP 25 * FROM Tabelle  ' max. 25 Zeilen auslesen

mkinzler 28. Aug 2008 20:47

Re: DBGrid Anzahl der Reihen
 
Da hast du, wie schon erwähnt folgende Möglichkeiten:
-Zeichnen des DBGrid selber übernehmen
-Daten in StringGrid übernehmen und bei Änderungen und neuen Zeilen diese in die Datenbank übernehmen bzw. nach Ende komplettes Grid in Datenbank zurückschreiben
Oder eine andere Kompo( ListView, Virtual TreeView)

Chemiker 28. Aug 2008 21:03

Re: DBGrid Anzahl der Reihen
 
Hallo Thomm,

beim StringGird hast Du doch auch zu Anfang leere Zeilen.

Bis bald Chemiker

grenzgaenger 28. Aug 2008 21:38

Re: DBGrid Anzahl der Reihen
 
Zitat:

Zitat von sx2008
Das bin ich eher anderer Meinung. In ungefähr 2 Minuten kann man ein DBGrid, eine Query, Datasource und ein DBNavigator auf ein Formular klatschen und kann sofort die Daten anzeigen und editieren. Sogar zu Entwicklungszeit kann man die Live-Daten sehen; das ist wirklich beeindruckend.

da magst du anderer meinung sein. das ist dein gutes recht. es gibt auch viele anfänger, die denken, nur drei kompos auf ein formular ziehen und das programm ist geschrieben... die gabs auch schon früher, und die wurden zumeist belächelt, da sie nicht wussten, was die daten (z.b. die VB klicker) aber das ist OT

das kurze zusammenklicken, ist zwar gut und schön, aber die einschränkungen sind zu gross, als dass man ernsthaft damit arbeiten kann. für 'ne RAD application, als prototyp um die anforderungen zu evaluieren, ist das i.o. :-) . dafür ist ja RAD gedacht. aber um eine ordnetliche app zu bekommen, hilft dann alles nix, da muss der code weggeworfen werden und vernünftig aufgebaut und strukturiert :-) , dann wird auch ein schuh draus.

für so eine trivialapplikation, mit einer tabelle und ein paar feldern, ist das aber durchaus ausreichend, wenn nicht weitere anforderungen vorliegen.

Hansa 28. Aug 2008 23:25

Re: DBGrid Anzahl der Reihen
 
ScrollBy wurde noch nicht erwähnt. Jetzt noch meine Meinung hierzu :

Zitat:

Zitat von sx2008
Das bin ich eher anderer Meinung.
In ungefähr 2 Minuten kann man ein DBGrid, eine Query, Datasource und ein DBNavigator auf ein Formular klatschen und kann sofort die Daten anzeigen und editieren.
Sogar zu Entwicklungszeit kann man die Live-Daten sehen; das ist wirklich beeindruckend.

Gibt wohl Ärger. Aber so kann man das beim besten Willen nichts stehen lassen. Wie Bernhard Geyer/Grenzgänger sagt : sowas wie DBGrid kann man für zusammengeklicktes Programm gebrauchen oder für Vorführzwecke ohne realen Hintergrund. Ansonsten besser nicht.

Im Übrigen ist das auch ziemlich unproduktiv.

sx2008 28. Aug 2008 23:57

Re: DBGrid Anzahl der Reihen
 
Zitat:

Zitat von Hansa
Gibt wohl Ärger. Aber so kann man das beim besten Willen nichts stehen lassen. Wie Bernhard Geyer/Grenzgänger sagt : sowas wie DBGrid kann man für zusammengeklicktes Programm gebrauchen oder für Vorführzwecke ohne realen Hintergrund.

Dann zeig' mir doch mal den Sourcecode eines Formulars, dass deiner Meinung nach richtig programmiert ist.
Eine Unit würde mir reichen.
Also ich verwende zu 70% das DBGrid und zu 30% das Dev Express Grid.
Das Dev Express Grid kann so gut wie alles, ist aber manchmal etwas zickig, deshalb verwende ich das DBGrid, wenn ich die Fülle den Funktionen nicht brauche.
Damit bleibt mein Sourcecode sauber und ich weiss, dass die Grids funktionieren.
Und darauf kommt es doch an: das GUI-Design muss locker von der Hand gehen, damit man sich auf die wirklich schwierigen Dinge konzentieren kann.

omata 29. Aug 2008 00:09

Re: DBGrid Anzahl der Reihen
 
Zitat:

Zitat von Hansa
Im Übrigen ist das auch ziemlich unproduktiv.

blödsinn.

Hansa 29. Aug 2008 00:47

Re: DBGrid Anzahl der Reihen
 
Zitat:

Zitat von omata
Zitat:

Zitat von Hansa
Im Übrigen ist das auch ziemlich unproduktiv.

blödsinn.

Nene, ist so. Bei Spezialgrids kanns alerdings schon anders sein. Soll nur eine gewisse Excel-Funktionlaität erreicht werden, dann reicht das DBGrid wohl auch. Ansonsten eher nicht.

fragile 5. Dez 2008 09:51

Re: DBGrid Anzahl der Reihen
 
Just my 2 cents :

Ich arbeite erst seit 2 Monaten mit Delphi, denke aber, daß man als ernsthafter Programmier-Anfänger sehr schnell über eine "Zusammenklick"-Anwendung hinaus kommt.
Das Erfolgserlebnis am Anfang ist aber für die weitere Motivation nicht zu unterschätzen, außerdem ist es wie schon gesagt für Rapid Prototyping bzw. Anforderungs-Evaluierung ein sehr schoenes Werkzeug. Ich arbeite daher eher nach einem "Vom-Groben-zum-Feinen" - Ansatz, zumindest bei diesem ersten Projekt.
Warum also das Rad für alltägliche, einfachere Softwarelösungen nochmal erfinden, wenn doch für sehr vieles schon passende Komponenten bereitstehen, und man sich auf die Logik dahinter konzentrieren kann...

Btw, gibt es einen Weg festzustellen, ob Daten im Grid eingetragen sind oder nicht ? Ich stelle eine Parent/Child Beziehung in einem DBGrid dar und möchte bei einem Buttonklick gerne feststellen, ob ein Datensatz im Grid angezeigt, bzw. von der Ergebnismenge "ausgespuckt" wird...

DeddyH 5. Dez 2008 09:57

Re: DBGrid Anzahl der Reihen
 
Versuch es mal über DBGrid.DataSource.Dataset.RecordCount.

fragile 5. Dez 2008 10:07

Re: DBGrid Anzahl der Reihen
 
*Patch* argh, RecordCount wars natürlich - vielen Dank !


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:16 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-2025 by Thomas Breitkreuz