AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Verknüpfung StringGrid und LiveBindings via Code
Thema durchsuchen
Ansicht
Themen-Optionen

Verknüpfung StringGrid und LiveBindings via Code

Ein Thema von WhatATime · begonnen am 14. Aug 2020 · letzter Beitrag vom 15. Okt 2020
Antwort Antwort
WhatATime

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

Verknüpfung StringGrid und LiveBindings via Code

  Alt 14. Aug 2020, 12:26
Delphi-Version: 10.3 Rio
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!
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Verknüpfung StringGrid und LiveBindings via Code

  Alt 14. Aug 2020, 12:43
Damit LiveBindings auf einem TStringGrid ausgeführt werden können, müssen mehrere Bindungen für Spalten, Zeilen, Zellen, Positionen erstellt werden.
Jedenfalls kenne ich das so. Ich habe allerdings noch nicht probiert das per Code zu "attachen".
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#3

AW: Verknüpfung StringGrid und LiveBindings via Code

  Alt 14. Aug 2020, 13:49
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".
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
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, 19: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
Antwort Antwort


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 19:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz