Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQLite und datensensitive Komponenten? (https://www.delphipraxis.net/177189-sqlite-und-datensensitive-komponenten.html)

Sven M. 23. Okt 2013 08:53

Datenbank: SQLite • Version: 3 • Zugriff über: -

SQLite und datensensitive Komponenten?
 
Hi zusammen,
neuer Anlauf im Bereich Datenbanken, spannendes Neuland für mich. :)

Folgende Situation:
Ich nutze nach Empfehlungen hier aus dem Forum den SQLite-Wrapper für Delphi für meine ersten Gehversuche. Erstellen von Datenbanken, Tabellen sowie das Befüllen mit Werten funktioniert schon sehr gut. Querys sollten mit Hilfe des beigelegten Beispiel-Projekts eigentlich auch keine große Hürde sein (hoff' ich).

Nun würde ich allerdings gerne eine Tabelle mit einer datensensitiven Komponente verbinden (analog TLineSeries auf DBChart mit TClientDataset), stehe diesbezüglich aber leider absolut auf dem Schlauch. Logisch erscheint mir, dass man auch hier das Feld DataSource der Series benutzt. Nur: Was muss ich dort eintragen? :gruebel:

Oder ist das schlicht und ergreifend nicht möglich und das sind die Abstriche, die man zugunsten einer solch' schlanken Lösung nun einmal machen muss?

Beste Grüße
Sven

baumina 23. Okt 2013 09:05

AW: SQLite und datensensitive Komponenten?
 
Wenn du eine TDatasource aufs Formular nimmst und dort das Dataset zuweist, kannst du in jeder DB-Komponente (z.B. TDBEdit, TDBGrid, TDBText, etc.) diese Datasource verwenden.

DeddyH 23. Okt 2013 09:11

AW: SQLite und datensensitive Komponenten?
 
Wenn ich das richtig überblicke, ist TSQLiteTable nicht von TDataset abgeleitet, da wird das nichts mit mal eben zuweisen. Hier könnte man dann auf eine der zahlreich verfügbaren TMemoryTable-Implementationen zurückgreifen oder selbst ein TClientDataset definieren. In beiden Fällen müssten die Datasets dann zur Laufzeit aus der TSQLiteTable mit Daten bestückt werden, dann kann man auch RAD-like die üblichen Zuweisungen vornehmen.

baumina 23. Okt 2013 09:17

AW: SQLite und datensensitive Komponenten?
 
Zitat:

Zitat von DeddyH (Beitrag 1232833)
Wenn ich das richtig überblicke, ist TSQLiteTable nicht von TDataset abgeleitet, da wird das nichts mit mal eben zuweisen. Hier könnte man dann auf eine der zahlreich verfügbaren TMemoryTable-Implementationen zurückgreifen oder selbst ein TClientDataset definieren. In beiden Fällen müssten die Datasets dann zur Laufzeit aus der TSQLiteTable mit Daten bestückt werden, dann kann man auch RAD-like die üblichen Zuweisungen vornehmen.

Ach du Schreck, damit habe ich nun echt nicht gerechnet. Würde mich persönlich extrem davon abhalten das Ding zu benutzen. Wie wäre es stattdessen mit ZEOS?

Sven M. 23. Okt 2013 09:52

AW: SQLite und datensensitive Komponenten?
 
@DeddyH: Ob ich die Daten aus der Tabelle abfrage und in die Series schreibe oder erst in ein TClientDataset, das ich dann der Series zuweise, macht im Endeffekt aber keinen Unterschied, oder? Wäre doch eher noch umständlicher?!

Ich werf' mal einen Blick auf die Zeos-Bibliotheken. Danke!

baeckerg 23. Okt 2013 10:07

AW: SQLite und datensensitive Komponenten?
 
Wenn Du XE5 verwendest kannst Du FireDAC verwenden

Sven M. 23. Okt 2013 10:10

AW: SQLite und datensensitive Komponenten?
 
XE 5? Davon kann ich nur träumen. Die Angabe da unter meinem Benutzernamen ist tatsächlich aktuell. :(

TraumTaenzerDieter 24. Okt 2013 07:28

AW: SQLite und datensensitive Komponenten?
 
Oder du nimmst die Komponenten von dieser Seite
http://www.filedepot.eu/sivak3/index.htm
die auch einen TDataSet enthalten.

Furtbichler 24. Okt 2013 07:39

AW: SQLite und datensensitive Komponenten?
 
Hab mit SQLLite-Komponenten ohne Generics leider nur schlechte Erfahrungen gemacht (Bugs ohne Ende), lasse mich gerne eines Besseren belehren.

Vielleicht doch eine Nummer größer, also FB (embedded) und Zeos o.ä.? FB ist eh mächtiger und auch nicht (viel) komplizierter.

Alternativ kann man auch mit den vielen Text-orientierten TDataset-Derivaten seine ersten Gehversuche starten, das wäre dann ganz ohne DB (einfach mal Torry.net konsultieren)

Perlsau 24. Okt 2013 07:44

AW: SQLite und datensensitive Komponenten?
 
Zitat:

Zitat von Sven M. (Beitrag 1232839)
@DeddyH: Ob ich die Daten aus der Tabelle abfrage und in die Series schreibe oder erst in ein TClientDataset, das ich dann der Series zuweise, macht im Endeffekt aber keinen Unterschied, oder? Wäre doch eher noch umständlicher?!
Ich werf' mal einen Blick auf die Zeos-Bibliotheken. Danke!

Den Ausdruck "in die Series schreiben" vestehe ich nicht. Was meinst du damit?

Ich habe letzte Woche an einer Minimalverschlüsselung für eine Projekterweiterung gearbeitet: Weil Firebird 2.5 noch keine Verschlüsselung kennt (soll ja angeblich mit V3.0 kommen), bin ich zur lokalen Bearbeitung der verschlüsselten Tabelle auf ein Clientdataset ausgewichen. Nach einigen Anlaufschwierigkeiten funktioniert das ebenso gut wie irgend ein DBDataset oder eine Query-Komponente. Man darf nur nicht vergessen, beim Start die Daten zu laden und vor Programmende wieder zu speichern. Das Programm PasswortTresor,* quasi ein Abfallprodukt meiner Auftragsarbeit, verwendet diesse Methode. Für SQLite muß man das natürlich anders machen, aber da kennen sich andere besser aus als ich.
Delphi-Quellcode:
// ********** CLIENT-DATASET LADEN *****************
Procedure TDatMod.ClientSet_Laden;
begin
  ClientSet_Zugang.Active      := False;
  Qset_Zugang.Open;
  ClientSet_Zugang.ProviderName := 'Prov_Zugang';
  ClientSet_Zugang.Open;
  ClientSetKodieren(1);
  Dsrc_Zugang.Enabled          := True;
  Qset_Zugang.Close;
  ClientSet_Zugang.ProviderName := '';
end;

// ********** CLIENT-DATASET SPEICHERN *************
Procedure TDatMod.ClientSet_Speichern;
Var
  Idx : Integer;
begin
  Dsrc_Zugang.Enabled := False;
  ClientSetKodieren(0);
  Qset_Zugang.Open;

  ClientSet_Zugang.First;
  WHILE NOT ClientSet_Zugang.Eof DO
  BEGIN
    Idx := ClientSet_Zugang.FieldByName('IDX_ZUGANG').AsInteger;
    IF NOT ClientSetToQuery(Idx) THEN ShowMessage('Fehler beim Speichern des ClientSets: ' + IntToStr(Idx));
    ClientSet_Zugang.Next;
  END;
  Qset_Zugang.Close;
end;
* (Freeware, Benutzer: Admin, Passwort: a1)


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:38 Uhr.
Seite 1 von 2  1 2      

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