Entwickler-Ecke
Datenbanken - Wie Datenbindung unterbrechen?
Micha339 - Fr 05.04.13 15:43
Titel: Wie Datenbindung unterbrechen?
Hallo,
ich habe ein an eine Datenbank gebundenes TDBSRichViewEdit. Äußerst selten - aber es kommt halt vor - möchte ich Änderungen am Dokumenten-Inhalt einfach nicht in der Datenbank speichern. Auf ReadOnly kann ich das DataSet nicht setzen, weil dann auch das TDBSRichViewEdit nicht editiert werden kann. Gibt's Tipps für mich? Danke vielmals vorab.
Beste Grüße
Micha
Moderiert von
Narses: Topic aus VCL (Visual Component Library) verschoben am Fr 05.04.2013 um 20:27
Delete - Fr 05.04.13 19:07
Datensensitive Komponenten sind ja gewöhnlich an ein TDataSource gebunden, um auf Änderungen in der Komponente bzw. im der zugrundeliegenden Datenfeld reagieren zu können. Wenn du also die Verbindung deines DBRichEdit zum DataSource trennst, wird in ersterem weder etwas angezeigt noch kannst du in dieser Situation dort etwas hineinschreiben. Die Antwort auf die Frage, ob man das spezielle, von dir erwähnte TDBSRichViewEdit dazu bewegen kann, mußt du der Dokumentation zu dieser Komponente entnehmen, denn ich kenne sie nicht.
Ganz sicher wäre es hilfreich beim Lösen deines Problems, wenn du kurz schilderst, wozu bzw. für welchen Fall du ein derartiges Szenario benötigst. Vielleicht kann man dabei ja, wie so häufig, den meist zum Scheitern verurteilten Versuch erkennen, ein Problem mit einem Schuß durch die Brust ins Auge lösen zu wollen :wink:
Micha339 - Mo 08.04.13 11:09
Hallo,
danke für die Rückmeldung. Es handelt sich um Briefvorlagen, die in der Datenbank abgelegt sind. Nun soll aber der Anwender bei der Erstellung der Serienbriefe anhand dieser Vorlage auch noch persönliche Bemerkungen in den Brief einfließen lassen, ohne dass das zukünftig dauerhaft für alle Briefe gilt. Es soll nur temporärer Natur sein.
bummi - Mo 08.04.13 13:15
Ich kenne die Komponente nicht könnte mir aber vorstellen dass Du mit einem nicht datensensitiven Control weiterkommst, bei Bedarf laden und speichern, irgendetwas in der Art ....
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| var Stream: TStream; Table.Edit; Stream := Table.CreateBlobStream(Table.FieldByName(FieldName), bmWrite); try SRichViewEdit1.RichViewEdit.SaveRTFToStream(Stream, False); finally Stream.Free; end; Table.Post; Stream := Table.CreateBlobStream(Table.FieldByName(FieldName), bmRead); try SRichViewEdit1.RVHeader.Clear; SRichViewEdit1.RVFooter.Clear; SRichViewEdit1.RichViewEdit.Clear; SRichViewEdit1.RichViewEdit.LoadRTFFromStream(Stream); finally; Stream.Free; end; SRichViewEdit1.RVHeader.Format; SRichViewEdit1.RVFooter.Format; SRichViewEdit1.SetRVMargins; |
Delete - Mo 08.04.13 13:16
Micha339 hat folgendes geschrieben : |
Es handelt sich um Briefvorlagen, die in der Datenbank abgelegt sind. Nun soll aber der Anwender bei der Erstellung der Serienbriefe anhand dieser Vorlage auch noch persönliche Bemerkungen in den Brief einfließen lassen, ohne dass das zukünftig dauerhaft für alle Briefe gilt. Es soll nur temporärer Natur sein. |
Vielleicht wäre es in diesem Fall besser, du erstellst ein neues Form und richtest darauf Änderungsmöglichkeiten für den Anwender ein. Das neue Form wird dann z.B. mit einem Button mit der Aufschrift "Brieftext vor dem Druck ohne Speichern ändern" oder etwas ähnlichem aufgerufen. Für den Änderungstext verwendest du dann ein nicht-datenbankgebundenes RichEdit, in das du beim OnShow des neuen Forms den Text aus dem DBRichEdit
reinkopierst [
http://www.entwickler-ecke.de/viewtopic.php?t=51063&view=df].
Oder du legst in der Datenbank eine neue Tabelle an, in der die geänderten Standard-Brieftexte abgelegt werden, am besten mit Datum, Userhinweis, Inhalts-Hinweis und Verweis auf den Standard-Brieftext.
Micha339 - Mo 08.04.13 13:35
Danke Euch beiden, werde mir nun durch den Kopf gehen lassen, wie ich es am besten angehe.
zuma - Di 09.04.13 16:09
Ich nehme mal an, du hast die Daten in einer Query ?
Ich würde die Query dann einfach gecached öffnen (CachedUpdates := True)
und dann entweder Query.ApplyUpdates (soll speichern)
oder eben CancelUpdates (kein Speichern) benutzen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!