请问如何把OleContainer1的word文档存入access的ole类型的字段中,并且又如何显示回来??高手帮忙啊!!!!!
解决方案 »
- dll 问题
- 无法保存配置信息到xml文件
- 请问如何用dbexpress连接mysql
- 求这样一种treeview控件,当子节点被部分选择时父节点是一种状态(比如显示灰色),当子节点被完全选择时,父节点被打勾,子节点没有被选
- 请教一个关于数据库的问题,有分!
- outlook Express 能否自动化?
- 哈哈,需要短信网关IP地址及其源代码的快来顶一下。
- 回调函数使用DELPHI
- 火烧眉毛了!Packed后,record如何用tcp/ip发送?
- 关于ExcelApplication控件的小问题
- 关于Intraweb中WebApplication.ShowMessage()的问题,知道的请进来看看!
- 一个简单问题,解决了就给分
DWORD CALLBACK COleRichEditCtrl::_StreamOutCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
CFile* pFile = (CFile*) dwCookie; pFile->Write(pbBuff, cb);
*pcb = cb; return 0;
}long COleRichEditCtrl::StreamOutData(CMemFile *pfileMem)
{
EDITSTREAM es;
es.dwCookie = (DWORD) pfileMem;
es.pfnCallback = _StreamOutCallback;
StreamOut(SF_RTF, es); return pfileMem->GetLength();
}BOOL CsRecordSet::PutChunk(LPCTSTR strField, LPBYTE pBuffer, UINT uLength)
{
BOOL bResult = TRUE;
BYTE *pBuf = pBuffer;
VARIANT varBLOB;
SAFEARRAY *psa;
SAFEARRAYBOUND rgsabound[1]; if (! m_bValid)
return FALSE;
if(pBuf)
{
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = uLength;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound); for (long i = 0; i < (long)uLength; i++)
SafeArrayPutElement (psa, &i, pBuf++);
varBLOB.vt = VT_ARRAY | VT_UI1;
varBLOB.parray = psa;
try
{
m_pRecordset->GetFields()->GetItem(strField)->AppendChunk(varBLOB);
}
catch (_com_error)
{
bResult = FALSE;
}
} return bResult;
}
loadfromStream()是写到库里面,好像是两个参数,一个是流,另一个是它的size,用tblob字段调用就行了savetostream()是从库里读出,里面是流的名字,最后从流里恢复成文件就行了.
procedure TF_add_doc.BitBtn2Click(Sender: TObject);
beginwith MainForm.docadoquery do
begin
Append;
//存入文档标题
Fieldbyname('Title').AsString:=Edit1.Text;
//在数据库中存入文档类型
if slx='.doc' then
Fieldbyname('lx').AsString:='word格式'
else if slx='.pdf' then
Fieldbyname('lx').AsString:='pdf格式'
else if slx='.ppt' then
Fieldbyname('lx').AsString:='powerpoint格式'
else if slx='.xls' then
Fieldbyname('lx').AsString:='excel格式';
//存入文档类型
Fieldbyname('Abstract').AsString:=memo1.Text;
//这句是关键,按路径以流存文件到数据库memo字段
TBlobField(FieldByName('Memo')).LoadFromFile(Edit2.Text);
try
Post;
except
showmessage('提交失败');
Cancel;
Exit;
end;
//用一函数进行日志记录
Mainform.InsertLog('添加文档:'+fn3);
end;
end; Close;
end;给分吧:)
procedure TForm1.Button3Click(Sender: TObject);
begin
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Text := 'SELECT BL FROM TABLE1';
Open;
TBlobField(FieldByName('BL')).SaveToFile('d:\abc.doc');
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
OleContainerFY1.CreateObjectFromFile('d:\1.doc',false);
OleContainerFY1.DoVerb(1);
end;
保存:
procedure TForm1.Button2Click(Sender: TObject);
var
MS: TMemoryStream;
begin
MS := TMemoryStream.Create;
OleContainerFY1.SaveToStream(MS);
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Text := 'SELECT * FROM TABLE1';
Open;
Append;
TBlobField(FieldByName('BL')).LoadFromStream(MS);
Post;
Application.MessageBox('succussful','fgyr',mb_ok);
end;
end;