AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Wie zeige ich einen TSQLiteTable an?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie zeige ich einen TSQLiteTable an?

Ein Thema von KahPee · begonnen am 16. Apr 2011 · letzter Beitrag vom 17. Apr 2011
Antwort Antwort
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#1

Wie zeige ich einen TSQLiteTable an?

  Alt 16. Apr 2011, 15:02
Datenbank: SQLite • Version: -- • Zugriff über: SQLite Wrapper
Hallo, wie kann ich einen TSQLitetable anzeigen lassen?
Z.B. in einer DBgrid komponente? Der Table wurde mittels dem SQLlite Wrapper ermittelt:


Delphi-Quellcode:
var
sldb: TSQLiteDatabase;
sltb: TSQLIteTable;
...
begin
...
sltb := slDb.GetTable('SELECT * FROM testtable');
....
In diesem Fall also die Frage wie man sltb am geeignesten anzeigt. Wenn das ganze ca 5 Felder hat. und man hinterher auch wieder rauskriegen soll welchen Datensatz der User angeklickt hat (z.B. im DBGrid).

Danke im Voraus

Kahpee
  Mit Zitat antworten Zitat
aurikel_Max

Registriert seit: 9. Okt 2009
86 Beiträge
 
#2

AW: Wie zeige ich einen TSQLiteTable an?

  Alt 16. Apr 2011, 17:40
Du kannst die Daten auch in einem Stringgrid anzeigen, welches du dann manuell befüllst:

Delphi-Quellcode:
  SQLTable := SQLDB.GetTable(SQLCommand); // SQLCommand = irgendwas mit Select
  if SQLTable.RowCount > 0 then
  begin
    while not (SQLTable.EOF) do
    begin
      ShowMessage(SQLTable.FieldAsString(0)); // an dieser Stelle musst du dann eben dein Stringgrid befüllen
      SQLTable.Next;
    end;
  end;
Max
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: Wie zeige ich einen TSQLiteTable an?

  Alt 16. Apr 2011, 19:19
nachdem Du DBGrid schon erwähnt hast, wo hakte es...

sltb > Datasource > DBGrid > Bei der Auswahl das(die) Schlüsselfelder weiterverarbeiten ...

Diese Wrapper sind bezüglich Speicherschutz nicht unkritisch...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: Wie zeige ich einen TSQLiteTable an?

  Alt 16. Apr 2011, 22:47
sltb > Datasource > DBGrid > Bei der Auswahl das(die) Schlüsselfelder weiterverarbeiten ...
Wie mache ich die Verbindung? Mit etwas wie diesem:
DBGrid1.DataSource:=slDb.GetTable('SELECT * FROM '+TTNAME); ist es leider nicht getan, da die Typen inkompatibel zu einander sind. Kannst du mir evtl mit nem kleinen Code zeigen wie das gemeint war?

Vielen Dank

KahPee
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#5

AW: Wie zeige ich einen TSQLiteTable an?

  Alt 16. Apr 2011, 23:36
Sorry, ich hatte mich mit SQLite bisher nicht befasst, TSQLiteTable leitet sich nicht wie ich vermutet hatte von TDataSet ab, sorry.
Gegf. alles über ein dynamisch erstelltes/befülltes Clientdataset darstellen?
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#6

AW: Wie zeige ich einen TSQLiteTable an?

  Alt 17. Apr 2011, 07:31
Gegf. alles über ein dynamisch erstelltes/befülltes Clientdataset darstellen?
Wie würde soetwas aussehen? Und wie schnell ist das ganze hinterher in der Umsetzung wenn man bis zu, sagen wir mal 5000 Zeilen in dieser Tabelle hat? Aus diesem Grund will ich auch keine Stringgrid nehmen weil ich befürchte, dass das dann ein wenig lange braucht...
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#7

AW: Wie zeige ich einen TSQLiteTable an?

  Alt 17. Apr 2011, 07:58
Also es gibt ja noch andere Zugriffskomponenten, die Datasource unterstützen (Zeos z.B.). MUss aber sagen, dass ich auch den "Simple SQLite Wrapper" verwende. Auch wenn die Eigenheit, erzeugte Objekte als Funktionsergebnis zu übergeben, etwas ungewöhnlich ist (und nichtmal Einheitlich, siehe Blob-Stream)

Was die Anzeige via TStringGrid angeht:

1 Million Datensätze werden im Stringgrid fast so schnell und gut angezeigt, wie 100! Das StringGrid darf nur nicht als DatenContainer missbraucht werden.

Also TStringGrid.RowCount auf Gesamt-Datenmenge setzen und Anzeige auf OwnerDraw, keine Daten ins StringGrid, nur der Header mit Feldnamen wird direkt im StringGrid gespeichert. Ein Puffer hält nur die Zeilen, die sichtbar sind (evtl. etwas davor/dahinter). In DrawCell werden dann die Daten aus dem Buffer im sichtbaren StringGrid-Feld angezeigt.

Symbolisch:

Delphi-Quellcode:
procedure TForm1.StringGridTableDrawCell(Sender: TObject;
  ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);

  function GetDBField(FieldNo, RecNo: Integer): String;
  begin
    Result := // Hier FeldDaten aus dem Buffer holen
  end;

  procedure SetTextStyle(ACanvas: TCanvas; BackClr, FontClr: TColor; Style: TFontStyles);
  begin
    ACanvas.Brush.Color := BackClr;
    ACanvas.Font.Color := FontClr;
    ACanvas.Font.Style := Style;
  end;

var
  s : String;
begin
  with (Sender as TStringGrid) do begin

    if gdFixed in State then
      SetTextStyle(Canvas, clBtnFace, clBtnText, [])
    else
    if gdSelected in State then
      SetTextStyle(Canvas, clHighlight, clHighlightText, [])
    else
      SetTextStyle(Canvas, clWindow, clWindowText, []);

    if ARow = 0 then // hier davon ausgehend, das es eine FixedRow als Header gibt
      s := Cells[Acol,Arow]
    else
      s := GetDBField(ACol, ARow);

    Canvas.TextRect(Rect,Rect.Left +2,Rect.Top+2, s);
  end;
end;

Geändert von Satty67 (17. Apr 2011 um 08:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#8

AW: Wie zeige ich einen TSQLiteTable an?

  Alt 17. Apr 2011, 09:25
Moin...

ich kann es kaum sehen wie du dich quälst. Warum benutzt du diesen Wrapper ? Zeos z.B. kann auch mit SQLite. Da hast du vernünftige Querys (Datasets) die ganz bequem über TDatasource an ein Grid z.B gebunden werden können.
  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 18:45 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