Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi IBObjects Grid (https://www.delphipraxis.net/176483-ibobjects-grid.html)

cult6 9. Sep 2013 06:55

Datenbank: Firebird • Version: 2.1 • Zugriff über: -

IBObjects Grid
 
Liste der Anhänge anzeigen (Anzahl: 2)
Guten Morgen!

Ich muss ein Programm erweitern, welches bereits IBObjects nutzt, um Daten aus einer Datenbank auszulesen und mittels Grid anzuzeigen. Es werden die Komponenten TIB_Grid, TIB_Query und TIB_Datasource genutzt.

Das auslesen der benötigten Daten aus der Datenbank sowie das Anzeigen mittels dem Grid im Programm ist nicht das Problem, das funktioniert perfekt, ABER ich muss die Daten anders anzeigen als sie in der Datenbank gespeichert sind UND muss sie editieren können und wieder richtig speichern. Ist das mit TIB_Grid möglich? Habe noch keine Möglichkeit gefunden mit diesem Grid Daten editieren bzw. löschen zu können. Im Anhang habe ich 2 Bilder, das erste Beschreibt die Struktur wie die Daten in der Tabelle gespeichert sind und das 2. wie sie im Programm angezeigt werden sollen. Ich hoffe es ist halbwegs verständlich :-D Danke schon mal im Voraus!

dataspider 9. Sep 2013 07:09

AW: IBObjects Grid
 
Hi,

ich arbeite zwar auch mit IBO, allerdings mit den TDataset - kompatiblen Komponenten.
Aber ich weiß, dass die TIB_Grid natürlich editieren kann.
Wichtig sind die Einstellungen der TIB_Query.
Bei einfachen Abfragen reicht es, Requestlive auf True zu setzten.
Bei Abfragen mit Join' s musst du die Update- Insert und Delete Statements (rechte Maus, Edit Component) richtig erzeugen.

Frank

cult6 9. Sep 2013 08:01

AW: IBObjects Grid
 
Danke, also mit der Eigenschaft Requestlive kann man das Grid nun endlich editieren und er speichert es auch in die Datenbank zurück, ABER ich möchte die Daten nicht on the fly speichern, sondern zuerst alles im Grid editieren und danach zB per Button den Befehl zum Speichern geben. Gibt es da eine Möglichkeit? Danke

Blup 9. Sep 2013 08:13

AW: IBObjects Grid
 
Dafür gibts die Komponente "TIB_Transaction".

dataspider 9. Sep 2013 08:19

AW: IBObjects Grid
 
oder man setzt CachedUpdates auf True und Speichert mit ApplyUpdates...

Frank

cult6 9. Sep 2013 08:40

AW: IBObjects Grid
 
Danke, das klappt jetzt soweit mit der Variante von DataSpider :)

Jetzt bleibt nur noch das Problem mit der Anzeige der Daten. Ich hab ehrlich gesagt noch keine Ahnung wie ich das umsetzen soll dass er die Daten nebeneinander anzeigt...

dataspider 9. Sep 2013 09:36

AW: IBObjects Grid
 
Sorry, da kann ich erst mal nicht helfen.

Ich habe es schnell mal probiert, ohne Probleme.
Welche Version von IBO hast du denn?

Und wie sieht das Statement und der KeyLinks - Eintrag aus?

Frank

cult6 9. Sep 2013 09:52

AW: IBObjects Grid
 
Zitat:

Zitat von dataspider (Beitrag 1227692)
Sorry, da kann ich erst mal nicht helfen.

Ich habe es schnell mal probiert, ohne Probleme.
Welche Version von IBO hast du denn?

Und wie sieht das Statement und der KeyLinks - Eintrag aus?

Frank

sorry Frank, ich hab 2 Minuten vor deinem Post meinen Eintrag nochmal editiert dass es nun funktioniert, ich bekomme zwar keinen Fehler mehr, jedoch speichert er mir die Daten nur beim 1. mal wirklich in die Datenbank, ab dem 2. mal passiert nichts... Muss ich nach dem applyUpdate noch was beachten? Cache leeren? Grid neu einlesen? etc..

dataspider 9. Sep 2013 10:08

AW: IBObjects Grid
 
Transaction.AutoCommit auf True oder nach dem ApplyUpdates Query.IB_Transaction.Commit.

Frank

baumina 9. Sep 2013 10:35

AW: IBObjects Grid
 
Eins möchte ich bei der Sache noch zu bedenken geben: Wenn du eine Transaction vor einer manuellen Bearbeitung der Daten startest, kann es sein, dass ein Commit erst Stunden später erfolgt, eben genau so lange, bis der Benutzer sich bequemt den entsprechenden Knopf zu drücken.

Man sollte lange Transaktionen aus folgenden Gründen vermeiden:
Falls es zu einem Stromausfall etc. kommen sollte, gehen die Eingaben verloren. Außerdem sperrt das
DBMS typischerweise von der Transaktion veränderte Zeilen, eventuell auch ganze Blöcke auf der Platte. Diese Sperren bleiben bis zum Ende der Transaktion erhalten. Lange Transaktionen können dann andere Benutzer behindern. Schließlich muß das DBMS für die Dauer der Transaktion Undo-Information aufbewahren. Wenn es die Speicherbereiche zyklisch neu verwendet, kann das auch zu Problemen führen.
Klassische Datenbanksysteme sind nicht für lange Transaktionen gedacht.


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