Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird: Bi-direktionaler Datenbankzugriff (https://www.delphipraxis.net/177859-firebird-bi-direktionaler-datenbankzugriff.html)

Angel4585 2. Dez 2013 13:10

Datenbank: Firebird • Version: 2.5.2 • Zugriff über: DBexpress

Firebird: Bi-direktionaler Datenbankzugriff
 
Hallo!

Ich möchte die Daten aus einer Firebird-Tabelle in einem DBGrid anzeigen, bearbeiten und darin navigieren.
Nun bekomme ich jedesmal wenn ich die Anwendung starte diese Meldung:
Zitat:

Diese Operation ist bei einer unidirektionalen Datenmenge nicht gestattet.
Jetzt habe ich mir die DBexpress-Komponenten angeschaut, konnte aber keine finden, die Bi-direktional ist.
Die sind laut Hilfe alle unidirektional.

Was nun?
Ich habe auch kein Tutorial gefunden wie man eine bi-direktionale Verbindung zur Datenbank aufbauen kann ( oder hab einfach nach den falschen Begriffen gesucht? )
Lediglich auf die Komponenten TClientDataset und TDataSetProvider bin ich bei meiner Suche gestoßen, aber keine Hilfe wie man die anwendet.

Nersgatt 2. Dez 2013 13:17

AW: Firebird: Bi-direktionaler Datenbankzugriff
 
Du musst die Daten erst in das TClientDataset bringen. Dazu nimmst Du den TDatasetProvider;
Also TQuery -> TDataSetProvider.DataSource -> TClientDataset.ProviderName -> TDataSource.DataSource -> Grid

Das TClientDataset musst Du dann öffnen, um die Daten im Grid anzuzeigen.

Angel4585 3. Dez 2013 10:55

AW: Firebird: Bi-direktionaler Datenbankzugriff
 
Danke, so funktioniert das schon besser.

Eine Frage möchte ich aber noch anschieben:
Wenn ich im DBGrid einen neuen Datensatz erstelle, wird dieser nicht in die Datenbank gespeichert.
Bei einem TClientDataSet kann ich das über ApplyUpdates regeln, aber wie geht das bei einer TSQLQuery die ich direkt verwende?

haentschman 3. Dez 2013 11:01

AW: Firebird: Bi-direktionaler Datenbankzugriff
 
Moin...

Was hälst du von anderen DB Zugriffskomponenten um die Komponentenorgie etwas zu verkürzen?
DBExpress:
TQuery -> TDataSetProvider.DataSource -> TClientDataset.ProviderName -> TDataSource.DataSource -> Grid
Zeos (kostenlos) und auch kostenpflichtige
TZQuery -> TDataSource-> Grid

...und mit "Bi-direktionaler Datenbankzugriff" keine Probleme :thumb:

DeddyH 3. Dez 2013 11:05

AW: Firebird: Bi-direktionaler Datenbankzugriff
 
Wenn es nur um Firebird geht, würde ich als kostenlose Zugriffskomponenten Unified Interbase (UIB) ins Auge fassen.

grl 3. Dez 2013 15:57

AW: Firebird: Bi-direktionaler Datenbankzugriff
 
Zitat:

Zitat von DeddyH (Beitrag 1238336)
Wenn es nur um Firebird geht, würde ich als kostenlose Zugriffskomponenten Unified Interbase (UIB) ins Auge fassen.

Gemeinsam mit dem FBDataset sind die wirklich gut und flexibel.

Allerdings ist die Homepage mit dem User-Forum weg - weiß jemand was da los ist?

GRL

Angel4585 4. Dez 2013 07:33

AW: Firebird: Bi-direktionaler Datenbankzugriff
 
Danke euch, aber ich hab die Vorgabe es mit TClientDataSet und dbExpress zu machen.

Habs jetzt auch hinbekommen indem ich eine Transaktion um die Query(ies) mache.
Bin noch bissl neu was diese Komponenten angeht, hab vorher fast nur mit der BDE gearbeitet.

Jetzt bekomme ich aber schon den nächsten Fehler, mühsam :D
Aber diesmal: Neuer Fehler neuer Thread würd ich sagen


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:15 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