![]() |
Datenbank: SQLite • Version: -- • Zugriff über: SQLite Wrapper
Wie zeige ich einen TSQLiteTable an?
Hallo, wie kann ich einen TSQLitetable anzeigen lassen?
Z.B. in einer DBgrid komponente? Der Table wurde mittels dem SQLlite Wrapper ermittelt:
Delphi-Quellcode:
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).
var
sldb: TSQLiteDatabase; sltb: TSQLIteTable; ... begin ... sltb := slDb.GetTable('SELECT * FROM testtable'); .... Danke im Voraus Kahpee |
AW: Wie zeige ich einen TSQLiteTable an?
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; |
AW: Wie zeige ich einen TSQLiteTable an?
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... |
AW: Wie zeige ich einen TSQLiteTable an?
Zitat:
Delphi-Quellcode:
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?
DBGrid1.DataSource:=slDb.GetTable('SELECT * FROM '+TTNAME);
Vielen Dank KahPee |
AW: Wie zeige ich einen TSQLiteTable an?
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? |
AW: Wie zeige ich einen TSQLiteTable an?
Zitat:
|
AW: Wie zeige ich einen TSQLiteTable an?
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; |
AW: Wie zeige ich einen TSQLiteTable an?
Moin...
ich kann es kaum sehen wie du dich quälst. :mrgreen: 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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:52 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