![]() |
Datenbank: ADS • Version: 8.1 • Zugriff über: TDataSource u. TTable
Memofeld in Tabelle schreiben?
Hallo,
ich habe ein kleines Problem mit dem wegschreiben von Daten in eine Tabelle, und zwar versuche ich den Text eines Memofeldes in ein Feld in einer Tabelle zu schreiben. Nur das will nicht so ganz klappen, ich gebe euch am besten mal meinen Code damit ihr besser nachvollziehen könnt was ich meine:
Delphi-Quellcode:
Ich denke es liegt an einer kleinigkeit die ich außer acht gelassen hab, ist so ziemlich das erste mal das ich was mit .post mache also ist es ganz gut möglich das ich was vergessen hab ;)
for i := 0 to vddTable1.RecordCount do
begin Memo1.Clear; Memo1.Text := VddTable1.FieldByName('Langtext').asstring; zwischS1 := Memo1.Lines.Count + zwischS1; Memo2.Lines.Text := Trim(Memo1.text); zwischS2 := Memo2.Lines.Count; zaehler := zwischS1 - zwischS2; zaehler2 := 0; zaehler2 := zaehler2 + zaehler; VddTable1.Edit; VddTable1.FieldByName('Langtext').asString := Memo2.Text; VddTable1.Post; vddTable1.Next; end; Danke schonmal für alle Antworten. mfg Alex |
Re: Memofeld in Tabelle schreiben?
Was für einen Typ hat das Datenbankfeld?
|
Re: Memofeld in Tabelle schreiben?
Hallo Alex,
du möchtest Leerzeilen vor und hinter LANGTEXT entfernen und dabei die Zahl der entfernten Zeilen protokollieren? Deine Schleife läuft einmal zu oft. Die Initialisierung von zahler2 gehört wohl nicht in die Schleife. Und last but not least: Was funktioniert nicht? Grüße vom marabu |
Re: Memofeld in Tabelle schreiben?
Also das Datenbankfeld ist auch vom Typ Memo.
Also vorher muss nicht sein, aber wird mit Trim() wohl mit abgedeckt, die entfernten Zeilen möchte Ich dann Zählen, ja. Die Intialisierung war wirklich fehl am Platze, hatte was getestet und wieder vergessen rauszunehmen ;) Also die bearbeiteten Inhalte im Feld Langtext werden nicht wieder in die Tabelle zurückgeschrieben, Ich denke das geht mit .post aber es ist wohl ein Fehler drin den ich nicht finde. |
Re: Memofeld in Tabelle schreiben?
Versuch mal
Delphi-Quellcode:
Das .Next führt den Post mit aus.
VddTable1.FieldByName('Langtext').Value := Memo2.Text;
|
Re: Memofeld in Tabelle schreiben?
Hmm also danke erstmal für die Antworten, Ich bin jetzt soweit, dass ich mir sicher bin das, dass Problem an dem Memofeld liegen muss, ich habe mal ein Feld vom Typ Character mit:
Delphi-Quellcode:
bearbeitet. Hier gabs keine Probleme.
VddTable1.Edit
VddTable1.FieldByName('Bezeichnung').asstring := 'narf'; VddTable1.Post; Ist denn .Text eigentlich die richtige Eigenschaft oder wäre .Lines vielleicht angebrachter? Woran könnte es sonst noch liegen? mfg Alex |
Re: Memofeld in Tabelle schreiben?
Memo-Felder einer TTable kannst du so bearbeiten:
Delphi-Quellcode:
Getippt und nicht getestet.
const
LT = 'LANGTEXT'; var ms: TStream; sl: TStrings; n, nTotal: Integer; begin // .. ms := TMemoryStream.Create; sl := TStringList.Create; nTotal := 0; with VddTable1 do while not Eof do begin TBlobField(TFieldByName(LT)).SaveToStream(ms); ms.Position := 0; sl.LoadFromStream(ms); n := sl.Count; sl.Text := Trim(sl.Text); Inc(nTotal, n - sl.Count)); ms.Size := 0; sl.SaveToStream(ms); ms.Position := 0; Edit; if sl.Count = 0 then FieldByName(LT).Clear else TBlobField(FieldByName(LT)).LoadFromStream(ms); Post; Next; end; sl.Free; ms.Free; // ... end; Edit: Tippfehler korrigiert - danke @Peinhard |
Re: Memofeld in Tabelle schreiben?
Erstmal danke das du dir die Mühe gemacht hast den Code zu tippen, Ich habe aber nun noch das Problem, dass mir angezeigt wird das "TField" kein Element Namens "SaveToStream" enthält, genauso bei LoadFromStream. Units Classes ist eingebunden. Kann man SaveToStream und LoadFromStream garnicht auf FieldByName anwenden? Wenn ja, was könnte man sonst benutzen?
mfg Alex |
Re: Memofeld in Tabelle schreiben?
Auf TBlobField bzw TMemoField casten. Die Zeile
Delphi-Quellcode:
scheint mir übrigens
if sl.Count = 0
Delphi-Quellcode:
lauten zu sollen.
if sl.Count > 0
|
Re: Memofeld in Tabelle schreiben?
Naja habs mal mit dem casten probiert, nun wird mir die Fehlermeldung: 'VddTable1: Error modifying read only blob' angezeigt und mein Programm stürzt komplett ab =(
Ich kann mit der Fehlermeldung nicht viel anfangen... Vielleicht sagt Sie euch ja mehr als mir. mfg Alex |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz