Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Stringgrid aus Datenbank füllen (https://www.delphipraxis.net/182792-stringgrid-aus-datenbank-fuellen.html)

Dejan Vu 19. Nov 2014 04:24

AW: Stringgrid aus Datenbank füllen
 
Zitat:

Zitat von Sir Rufo (Beitrag 1280250)
Rein grundsätzlich betrachtet bietet es sich immer an, sowas nicht direkt von der Datenbank in ein Control zu pusten. Das verführt dann auch sehr leicht dazu in der Datenbank seltsame Strukturen zu erstellen (das passt besser zum Control) oder sich sonstwie zu stark an der Präsentation zu orientieren.

Dieses konkrete Projekt hier sieht sehr nach etwas komplexem aus ('Aufgabenplaner'). Da würde ich deinen Vorschlag unbedingt beherzigen.

Bei einfachen Darstellungen einer Datenmenge (aka 'Reports') wäre das ein absoluter Overkill. Dafür gibt es dann in SQL (siehe himitsu's Beitrag) die VIEWS, die hierfür vollkommen ausreichend sind. RAD muss ja nicht komplett abgeschafft werden. Insofern würde ich dein 'immer.. nicht' (=nie) relativieren. Eine VIEW kann ich in jedem datensensitiven Steuerelement ohne eine Zeile Code darstellen.

Immer den Weg wählen, der nachhaltig(!) am einfachsten ist.

p80286 19. Nov 2014 11:17

AW: Stringgrid aus Datenbank füllen
 
Zitat:

Zitat von Dejan Vu (Beitrag 1280269)
Insofern würde ich dein 'immer.. nicht' (=nie) relativieren. Eine VIEW kann ich in jedem datensensitiven Steuerelement ohne eine Zeile Code darstellen.

das klingt so als würdest Du Dich für Datensensitiven Controls einsetzen.
Darüber kann mann gewiss diskutieren, aber vor allem wenn ich hier viele Beiträge lese mein DBEdit, mein DBGrid mein DB... mag nicht, und einige davon scheinen dem Experimentierstadium schon etwachsen zu sein,dann kann nicht ernsthaft der Verwendung von Datensensitiven Controls zustimmen.

Was die VIEWs angeht bin ich zwar anderer Meinung (eine Query tut's auch) aber das ist eher Geschmackssache und teilweise auch vom Datenbanksystem abhängig.

Gruß
K-H

P.S.
Solange Du weißt was Du tust, nutz weiter DB...

himitsu 19. Nov 2014 11:25

AW: Stringgrid aus Datenbank füllen
 
Vorteil Datenverwaltung, Datenspeicherung und Datenanzeige zu trennen:

Man kann an allen Stellen etwas austauschen
* andere Anzeigekomponente, wie z.B. eine Kalenderkomponente oder VCL/FMX/HTMLAusgabe
* andere Speicherung -> XML, INI, Webserver, anderes DBMS usw.

Luckner 19. Nov 2014 17:44

AW: Stringgrid aus Datenbank füllen
 
Was stimmt nicht an der while-Schleife. Ohne Diese wird in einer Zelle der Text geschrieben. Mit der Schleife, gar nichts.

Delphi-Quellcode:
procedure TForm1.Gridfuellen();
begin
  DataModuleTODOList.IBDatabaseTODOList.Connected := true;
  Datamodule1.DataModuleTODOList.IBDataSet1.Open;
  Datamodule1.DataModuleTODOList.IBDataSet1.Close;
  Datamodule1.DataModuleTODOList.IBDataSet1.SelectSQL.Clear;
  Datamodule1.DataModuleTODOList.IBDataSet1.SelectSQL.Add('select * from EREIGNISSE where KW = ' + QuotedStr(LabelKW.Caption) + ' and JAHR = ' + LabelJahr.Caption + ' order by ZEILE, SPALTE');
  Datamodule1.DataModuleTODOList.IBDataSet1.Open;
  if Datamodule1.DataModuleTODOList.IBDataSet1.IsEmpty then
     begin
       ShowMessage('noch keinen Eintrag gefunden');
     end
  else
     begin
       Datamodule1.DataModuleTODOList.IBDataSet1.First;

       while Datamodule1.DataModuleTODOList.IBDataSet1.Eof do
          begin
            StringGrid1.Cells[Datamodule1.DataModuleTODOList.IBDataSet1ZEILE.AsInteger, Datamodule1.DataModuleTODOList.IBDataSet1SPALTE.AsInteger] := Datamodule1.DataModuleTODOList.IBDataSet1TEXT.Value;
            Datamodule1.DataModuleTODOList.IBDataSet1.Next;
          end;
     end;
end;
Luckner

Dejan Vu 19. Nov 2014 18:06

AW: Stringgrid aus Datenbank füllen
 
Solange die Datenmenge am Ende ist, tue ...

Sollte es nicht heißen: Solange die Datenmenge NOCH NICHT am Ende ist?

p80286 19. Nov 2014 18:07

AW: Stringgrid aus Datenbank füllen
 
while not (Datamodule1.DataModuleTODOList.IBDataSet1.Eof )

Gruß
K-H

Der rote Kasten ist in Urlaub!

Dejan Vu 19. Nov 2014 18:14

AW: Stringgrid aus Datenbank füllen
 
Zitat:

Zitat von p80286 (Beitrag 1280312)
das klingt so als würdest Du Dich für datensensitiven Controls einsetzen.

Solange es um die Anzeige geht, was spricht dagegen?
Zitat:

Was die VIEWs angeht bin ich zwar anderer Meinung (eine Query tut's auch)
Eigentlich schon, aber eine VIEW ist wiederverwendbar. Die Query natürlich auch, aber ich baue mir die Reports eben immer so, das man sie mit Fast/Crystal/SchießmichtotReport oder direkt in EXCEL abbilden kann, ohne dafür den Report-Quelltext zu haben (oder -Gott bewahre-) in den Quelltext der Anwendung rein muss. Wenn ich die Query kopiere und es ändert sich eine Geschäftsregel, hab ich Pech. Eine View ist zudem auch als Quelle für komplexere Report nützlich und und und. Du schreibst ja auch Prozeduren und verwendest kein Copy&Paste.
Zitat:

Solange Du weißt was Du tust, nutz weiter DB...
Keine Bange. Man bekommt ja keine Pickel, wenn man DB-Controls verwendet.

Bau mal eine komplexe Eingabe mit einem DevExpress-Grid als RAD (und dahinter eine updatetable View :mrgreen:) zum einen und dann das gleiche toll mit TList<TFooBar> und persistenzschicht und manuellem Füllen (bloß keine DB-VCL) und und und. Also bei mir geht das in ein paar Minuten und solange Du noch rumtippst, um keine Pickel zu bekommen, bin ich schon auf dem Golfplatz/am Strand/an der Bar.

Wie gesagt: Ich weiß, was ich tue. Sollte man eh, meinste nich?

Luckner 20. Nov 2014 10:56

AW: Stringgrid aus Datenbank füllen
 
Danke für die Hilfe. Je später der Abend, desto mehr Bretter vor den Augen. Ärgerlich.

Danke, Luckner


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 Uhr.
Seite 2 von 2     12   

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