Solved

Post to BLOB in MS Access using TADODataset

Posted on 2002-06-06
6
442 Views
Last Modified: 2012-06-21
Here is my code:
procedure TForm1.btnAddBlobClick(Sender: TObject);
var
st1:TStream; //ole1:Olecontainer, rst:TADODataSet in my form, rst.Fields[0]=blob

begin
   try
      ole1.InsertObjectDialog;
      rst.Append;
      st1:=rst.CreateBlobStream(rst.Fields[0],bmReadWrite);
      ole1.SaveToStream(st1);
            rst.Post;
   finally
      st1.Free;
   end;
end;

I am getting error that empty row can not be inserted. What's wrong?


0
Comment
Question by:bogiboy
6 Comments
 
LVL 12

Expert Comment

by:Lee_Nover
ID: 7060129
you probably have some fields in the table that MUST have a value
0
 
LVL 1

Author Comment

by:bogiboy
ID: 7060557
only fields that i have are Key (autoinc) and BLOB, also, I tried with BLOB foield as the only one in the table...same problem
0
 
LVL 12

Expert Comment

by:Lee_Nover
ID: 7060601
weird
have you tried using .Insert ?
I had the same problem but I don't remember how I solved it :)
0
What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

 
LVL 6

Expert Comment

by:swift99
ID: 7061185
I remember having the same problem and it went away when I switched to any non-Access DBMS.  At that point I stopped using Access as a back end for my own apps.
0
 
LVL 27

Accepted Solution

by:
kretzschmar earned 100 total points
ID: 7061217
access stores blobs with an ole-server information prefix.

if there is no need to access the content within the access-frontend, then you should be able to store
your content simple with

tblobfield(dataset.fieldbyname('fieldname')).loadfromfile('filename');  //or loadfromstream

savetofile/savetostream for the other direction

meikl ;-)
0
 
LVL 1

Author Comment

by:bogiboy
ID: 7062592
Kretzschmar, you answered my problem. Using st1:=rst.CreateBlobStream(Tfield,mode) I couldn't do anything, but using TBlobField(...) syntacs -it works. Still wondering why.
NOTE: Make sure that you declare stream as TMemoryStream, not TStream to load document into OleContainer. When used TStream, I got "Stream read error" so I did typecast in OpenDoc procedure and it started to work. The same applies to AddDoc procedure.

Here is my code to:
1) Load document and post it to a blob field
2) Load it from DB and run it using OLEContainer

procedure TForm1.btnAddClick(Sender: TObject);
var
st:TMemoryStream;
begin
try
 st:=TMemoryStream.Create;
rst.Open;
Ole1.SaveToStream(St);
rst.Append;
TBlobField(rst.FieldByName('Document')).LoadFromStream(st);
rst.Post;
   finally
    st.Free;
  end;
end;

procedure TForm1.ButtonOpenDoc(Sender: TObject);
var
str:TMemoryStream;
begin
   try
   str:=TMemoryStream.Create;
   str:=TMemoryStream(rst.CreateBlobStream(rst.FieldByName('Document'),bmRead));
   ole1.LoadFromStream(str);
   ole1.Iconic:=False;
   ole1.DoVerb(0);
   finally
      str.Free;
   end;
end;
0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Suggested Solutions

In this tutorial I will show you how to use the Windows Speech API in Delphi. I will only cover basic functions such as text to speech and controlling the speed of the speech. SAPI Installation First you need to install the SAPI type library, th…
Introduction Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview.  I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGrid…
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…

705 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

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now