Einzelnen Beitrag anzeigen

WhatATime

Registriert seit: 19. Jun 2020
Ort: München
9 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Verknüpfung StringGrid und LiveBindings via Code

  Alt 15. Okt 2020, 18:29
Hallo zusammen,

ich möchte meine Datenbank via LiveBindings in einer StringGrid anzeigen lassen. Es handelt sich um eine FMX Anwendung, Datenbank ist MSSQL. Aber dazu möchte ich nicht den LiveBindings Designer benutzen, sondern via Code arbeiten.
Leider ist meines erachtens die Dokumentation dazu recht schlecht ausgearbeitet.

Folgendes habe ich dann zusammengeschustert:

Code:
procedure TForm_LiveBindings.CornerButton_Click(Sender: TObject);
var
  aLinkTableToDataSource: TLinkGridToDataSource;
  aConnection: TADOConnection;
  aQuery: TADOQuery;
  aBindSource: TBindSourceDB;
begin
  aConnection:= TADOConnection.Create(self);
  aQuery:= TADOQuery.Create(self);
  aBindSource:= TBindSourceDB.Create(self);
  aLinkTableToDataSource:= TLinkGridToDataSource.Create(self);

  // Hier wird aConnection aufgesetzt

  aQuery.Connection := aConnection;
  aQuery.SQL.Text := 'SELECT * FROM TestTable';
  aQuery.Active := True;

  aBindSource.DataSource.DataSet := aQuery;
  aBindSource.DataSource.AutoEdit := True;
  aBindSource.DataSource.Enabled := True;

  aLinkTableToDataSource.DataSource := aBindSource;
  aLinkTableToDataSource.GridControl := StringGrid1;

end;
Welches Ergebnis bekomme ich? Nun in der StringGrid werden mir alle Spalten der Datenbanktabelle angezeigt, genauer gesagt alle Header der Spalten. Der Inhalt fehlt aber total, jede Zeile bleibt leer. Wo genau bin ich also falsch abgebogen? Was habe ich vergessen? Jemand eine Idee?

Eine andere Frage: ist ein StringGrid ein vernünftiges Anzeigemedium oder bietet sich besseres an?

Vielen Dank an euch!
Es gibt Datenbank gitter. TDBGrid?
Ich weiß es gibt leute die livebindings toll finden. Ich musste nach dem ich mehrfach auf unzulänglichkeiten gestoßen bin, am Ende nach langer Entwicklungszeit alle Live bindings aus dem Projekt entfernern...und das war ziemlich schmerzvoll, denn es war auf eine MVVM Architektur aufgebaut und ohne Livebindings macht die keinen Sinn.

Also Du kannst das gerne mit Live bindings machen vielleicht klappts ja. Nur für mich sind die erstmal nichts mehr in Delphi, bis sie funktionieren.

Einfach über die Datenmenge iterieren füllt dein Stringgrid vermutlich genau so auf wie du es gerne hättest. Und dafür bleibt dir das rumgehampel mit den live bindings erspart.
Vor allem sind die Live bindings nicht an beiden enden "Live".
Danke für deine Einschätzung, ich bin mittlerweile auch der Meinung, dass LiveBindings nicht gerade das gelbe vom Ei ist, "rumgehampel" trifft es doch gut. Mir fehlt einfach die Kontrolle darüber was passsiert. Ich habe aber die Hoffnung noch nicht ganz aufgegeben und probiere weiter
  Mit Zitat antworten Zitat