AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Memofeld in Tabelle schreiben?

Memofeld in Tabelle schreiben?

Ein Thema von Borschti · begonnen am 31. Mär 2008 · letzter Beitrag vom 3. Apr 2008
Antwort Antwort
Seite 1 von 2  1 2   
Borschti

Registriert seit: 1. Nov 2007
Ort: Marburg Lahn
235 Beiträge
 
Delphi 2007 Professional
 
#1

Memofeld in Tabelle schreiben?

  Alt 31. Mär 2008, 11:56
Datenbank: ADS • Version: 8.1 • Zugriff über: TDataSource u. TTable
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:
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;
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

Danke schonmal für alle Antworten.

mfg
Alex
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Memofeld in Tabelle schreiben?

  Alt 31. Mär 2008, 12:02
Was für einen Typ hat das Datenbankfeld?
Markus Kinzler
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Memofeld in Tabelle schreiben?

  Alt 31. Mär 2008, 12:07
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
  Mit Zitat antworten Zitat
Borschti

Registriert seit: 1. Nov 2007
Ort: Marburg Lahn
235 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Memofeld in Tabelle schreiben?

  Alt 31. Mär 2008, 12:20
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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Memofeld in Tabelle schreiben?

  Alt 31. Mär 2008, 12:26
Versuch mal
VddTable1.FieldByName('Langtext').Value := Memo2.Text; Das .Next führt den Post mit aus.
Markus Kinzler
  Mit Zitat antworten Zitat
Borschti

Registriert seit: 1. Nov 2007
Ort: Marburg Lahn
235 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Memofeld in Tabelle schreiben?

  Alt 31. Mär 2008, 12:58
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:
VddTable1.Edit
VddTable1.FieldByName('Bezeichnung').asstring := 'narf';
VddTable1.Post;
bearbeitet. Hier gabs keine Probleme.

Ist denn .Text eigentlich die richtige Eigenschaft oder wäre .Lines vielleicht angebrachter?

Woran könnte es sonst noch liegen?

mfg
Alex
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Memofeld in Tabelle schreiben?

  Alt 31. Mär 2008, 13:41
Memo-Felder einer TTable kannst du so bearbeiten:

Delphi-Quellcode:
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;
Getippt und nicht getestet.

Edit: Tippfehler korrigiert - danke @Peinhard
  Mit Zitat antworten Zitat
Borschti

Registriert seit: 1. Nov 2007
Ort: Marburg Lahn
235 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Memofeld in Tabelle schreiben?

  Alt 31. Mär 2008, 15:12
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
  Mit Zitat antworten Zitat
Peinhard

Registriert seit: 8. Jul 2006
152 Beiträge
 
#9

Re: Memofeld in Tabelle schreiben?

  Alt 31. Mär 2008, 15:17
Auf TBlobField bzw TMemoField casten. Die Zeile

if sl.Count = 0 scheint mir übrigens

if sl.Count > 0 lauten zu sollen.
Confuzius say: Early worm have death wish.
  Mit Zitat antworten Zitat
Borschti

Registriert seit: 1. Nov 2007
Ort: Marburg Lahn
235 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Memofeld in Tabelle schreiben?

  Alt 31. Mär 2008, 16:20
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:57 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