Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Access XP, ADO, tstringlist und tmemofield problem (https://www.delphipraxis.net/2212-access-xp-ado-tstringlist-und-tmemofield-problem.html)

Blizzard 12. Jan 2003 17:57


Access XP, ADO, tstringlist und tmemofield problem
 
hallo leute,
ich bin grade dabei eine anwendung zu proggen mit der ich aus einer access db lese und darin schreibe das klappt soweit auch ganz gut. jetzt versuche ich gerade den inhalt einer tstringlist in ein memo feld zu schreiben. er scheint auch alle zu machen soll heißen er bringt keine fehlermeldung allerdings ist das memo feld danach leider leer.
Hir mal mein bisheriger Code:
Code:
var
   cast:tmemofield;
   bs:tadoblobstream;
   castlist:tstringlist;
begin
         ADOQuery1.SQL.Clear;
         ADOQuery1.SQL.Add('select * from ['+used_table+'-details] where [sub-id]='+id.text);

         cast:=tmemofield.Create(ADOQuery1);
         cast.FieldName:='cast';
         cast.Name:=ADOQuery1.Name+cast.FieldName;
         cast.Index:=0;
         cast.DataSet:=ADOQuery1;

         ADOQuery1.fielddefs.Update;
         ADOQuery1.open;

         castlist:=tstringlist.create;
         castlist.add('test');

        adoquery1.edit;
        bs:=TADOBlobStream.Create(cast,bmWrite);
        try
          castlist.SaveToStream(bs);
        finally
          adoquery1.Post;
          castlist.Free;
        end;

        ADOQuery1.Close;
        cast.Free;
end;
Hoffe mir kann jemand sagen was ich falsch mache oder mir einen tipp geben wie ich es anders/besser machen kann damit es klappt.
MfG
Blizzard

xbu58 12. Jan 2003 19:36

hallo Blizzard

Ich weiss nicht, ob das was Du gemacht hast überhaupt funktioneren kann. Als werde ich keinen Kommentar dazu abgeben und an Stelle dessen sagen, wie ich das jeweils mache.

Code:
procedure SaveToMemo(AStrList: TStrings; AMemoFld: TMemoField);
var
  xMemStream : TMemoryStream;
begin
  xMemStream := TMemoryStream.Create;
  try
    AStrList.SaveToStream(xMemStream);
    AMemoFld.LoadFromStream(xMemStream);
  finally
    xMemStream.Free;
  end;
end;
Natürlich muss das ADOQuery vorher aktiviert worden sein und das Feld bestehen. Weiter muss vorher entweder <Query>.Edit;, <Query>.Insert; oder <Query>.Append; und nachher <Query>.Post aufgerufen werden.

So mache ich das auf SQLServer und SQLAnywhere mit ADO. Bei beiden DBServern funktioniert das. Also sollte das auch bei Access gehen.

Gruss
Xaver


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