christian_dindin(石之轩),请进。求直接从SQLSERVER数据库中提取和保存华表数据的方法

mengli1 2002-06-11 09:46:51
你好,我看到了你在华表论坛上的留言。言中提到了直接从数据库中提取和保存华表数据。我用PB实现了该功能,但在DELPHI中却不知道如何去做。
我用的是delphi5.0和华表4.2和sqlserver2000的版本,请告诉我如何去做好吗?我很着急,请最好告诉我相关源码。
...全文
74 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
一点点凋落 2002-06-12
  • 打赏
  • 举报
回复
试了一下:

procedure TForm1.Button1Click(Sender: TObject);
var
temp: TBlobStream;
V: OleVariant;
MStream: TMemoryStream;
Size: Integer;
Buffer: Pointer;
begin
Query1.Close;
Query1.SQL.Text:='select * from test';
Query1.Open;
Query1.Insert;
Query1.FieldByName('id').AsInteger:=1;
temp:=TBlobStream.Create(TBlobField(Query1.FieldByName('image')),bmWrite);
MStream:=TMemoryStream.Create;
try
Cell1.DoSaveToBuffer(V);
Size:=VarArrayHighBound(V,1)-VarArrayLowBound(V,1)+1;
Buffer:=VarArrayLock(V);
MStream.WriteBuffer(Buffer^,Size);
VarArrayUnLock(V);
MStream.SaveToStream(temp);
Query1.Post;
finally
MStream.Free;
temp.Free;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
temp: TBlobStream;
MStream: TMemoryStream;
Buffer: Pointer;
V: OleVariant;
begin
Query1.Close;
Query1.SQL.Text:='select * from test where id=1';
Query1.Open;
Query1.Edit;
temp:=TBlobStream.Create(TBlobField(Query1.FieldByName('image')),bmRead);
MStream:=TMemoryStream.Create;
try
MStream.LoadFromStream(temp);
V:=VarArrayCreate([0,MStream.Size-1],varByte);
Buffer:=VarArrayLock(V);
MStream.ReadBuffer(Buffer^,MStream.Size);
VarArrayUnLock(V);
finally
MStream.Free;
temp.Free;
end;
Cell2.DoReadFromBuffer(V);
end;
mengli1 2002-06-12
  • 打赏
  • 举报
回复
可我要求是不通过临时文件转换,直接从数据库中提取和保存华表数据。现在华表4.2版本有个SaveToBuffer\ReadFromBuffer来保存和读入华表文件到olevariant型变量。
我想要的是如何将olevariant写入和读出到sqlserver
一点点凋落 2002-06-12
  • 打赏
  • 举报
回复
假设数据库中有表test,两个字段id和image,id是主键
Cell1是要保存的Cell,Cell2用来显示从数据库提取出来的Cell
把query1的requestlive设置为true
保存:
procedure TForm1.Button1Click(Sender: TObject);
var
temp: TBlobStream;
MStream: TMemoryStream;
begin
Query1.Close;
Query1.SQL.Text:='select * from test';
Query1.Open;
Query1.Insert;
Query1.FieldByName('id').AsInteger:=1;
temp:=TBlobStream.Create(TBlobField(Query1.FieldByName('image')),bmWrite);
MStream:=TMemoryStream.Create;
Cell1.DoSaveFile('d:\ss.dat');
MStream.LoadFromFile('d:\ss.dat');
MStream.SaveToStream(temp);
Query1.Post;
end;

提取
procedure TForm1.Button2Click(Sender: TObject);
var
temp: TBlobStream;
MStream: TMemoryStream;
begin
Query1.Close;
Query1.SQL.Text:='select * from test where id=1';
Query1.Open;
Query1.Edit;
temp:=TBlobStream.Create(TBlobField(Query1.FieldByName('image')),bmRead);
MStream:=TMemoryStream.Create;
MStream.LoadFromStream(temp);
MStream.SaveToFile('d:\ss2.dat');
Cell2.DoOpenFile('d:\ss2.dat');
end;

Delphi5+SQL Server7.0通过。

256

社区成员

发帖
与我相关
我的任务
社区描述
其他产品/厂家
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧