Solved

Saving and Restoring DevEx view information via streams

Posted on 2009-04-07
3
1,094 Views
Last Modified: 2013-11-23
I have two procedures, one of which is intended to write grid view information to a database field and the other is to read and use this information to restore the view.  Code is below.  I thought the procs were working with early testing but now I am wondering if that was a hallucination!?  I'm hoping someone can spot my problem.
 - I created similar procs where the information is stored to and restored from the registry and those work as expected
 - I can see the data being written and re-written to the database.
 - I have stepped through the program to verify that each of the commands are executing.
procedure TfrmMain.SaveShopGridsToDB;
var
  Stream: TMemoryStream;
  BS: TAdsBlobStream;
begin
  Stream := TMemoryStream.Create;
  try
    gtvShop.StoreToStream(Stream, [], '');
    dtm.tblCases.Edit;
    BS := TAdsBlobStream(dtm.tblCases.CreateBlobStream(
                       dtm.tblCases.FieldByName('CsShopGrid1'), bmWrite));
    try
      BS.CopyFrom(Stream, 0);
    finally
      BS.Free;
      dtm.tblCases.Post;
    end;
  finally
    Stream.Free;
  end;
end;
 
procedure TfrmMain.RestoreShopGridsFromDB;
var
  Stream: TMemoryStream;
  BS: TAdsBlobStream;
begin
  if dtm.tblCases.FieldByName('CsShopGrid1').IsNull then Exit;
  Stream := TMemoryStream.Create;
  try
    BS := TAdsBlobStream(dtm.tblCases.CreateBlobStream(
                       dtm.tblCases.FieldByName('CsShopGrid1'), bmRead)); 
    try
      Stream.CopyFrom(BS, 0);
      gtvShop.RestoreFromStream(Stream, True, False, [], '');
    finally
      BS.Free;
    end;
  finally
   Stream.Free;
  end;
end;

Open in new window

0
Comment
Question by:ttheimer
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 
LVL 5

Expert Comment

by:Mechanic_Kharkov
ID: 24093363
Maybe and of stream?

      Stream.CopyFrom(BS, 0);
      Stream.Position := 0;
      gtvShop.RestoreFromStream(Stream, True, False, [], '');

Open in new window

0
 
LVL 5

Accepted Solution

by:
Mechanic_Kharkov earned 500 total points
ID: 24093367
*end of stream :-)
0
 

Author Closing Comment

by:ttheimer
ID: 31567829
Spot on!  I added the line to reset the stream position and the save and restore worked as intended.  Thank you.
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Programmer's Notepad is, one of the best free text editing tools available, simply because the developers appear to have second-guessed every weird problem or issue a programmer is likely to run into. One of these problems is selecting and deleti…
Update (December 2011): Since this article was published, the things have changed for good for Android native developers. The Sequoyah Project (http://www.eclipse.org/sequoyah/) automates most of the tasks discussed in this article. You can even fin…
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.
THe viewer will learn how to use NetBeans IDE 8.0 for Windows to perform CRUD operations on a MySql database.

690 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question