Autor Beitrag
Micha339
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Fr 05.04.13 15:43 
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 user profile iconNarses: Topic aus VCL (Visual Component Library) verschoben am Fr 05.04.2013 um 20:27
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: 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 ....

ausblenden 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; 
// Speichen 
  Table.Edit; 
  Stream := Table.CreateBlobStream(Table.FieldByName(FieldName), bmWrite); 
  try
   SRichViewEdit1.RichViewEdit.SaveRTFToStream(Stream, False); 
  finally
   Stream.Free; 
  end;
  Table.Post; 
// Laden 
  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;

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS

Für diesen Beitrag haben gedankt: Micha339
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 08.04.13 13:16 
user profile iconMicha339 hat folgendes geschrieben Zum zitierten Posting springen:
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.

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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mo 08.04.13 13:35 
Danke Euch beiden, werde mir nun durch den Kopf gehen lassen, wie ich es am besten angehe.
zuma
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: 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.

_________________
Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!