请教autocad的dwg格式文件在oracle 9数据库中的存入与读取(100分)

  • 主题发起人 主题发起人 wichian
  • 开始时间 开始时间
W

wichian

Unregistered / Unconfirmed
GUEST, unregistred user!
问题是:从数据库中导出的文件无法用AUTOCAD打开,打开的时

候提示 “该文件包含错误信息或已损坏”。

我不清楚流数据在写入数据库是数据被改变或者是在读出时被改

变,
还是写入和读出的时候都会改变流数据。
因为当我把流数据从一个文件读入,并读取存到另一个文件时,

新的文件
可以使用CAD程序打开。

想请教各位高手,富翁们,如何才能在数据库中写入和读取流数

据时能保持
数据格式不便。或者有什么办法能在数据库中保存DWG格式文件

,并能正确导出
以及直接打开的方法。

procedure TForm2.BitBtn1Click(Sender: TObject);
var
FileName, ExtName:string;
openDlg: TOpenDialog;
ms:TMemoryStream;
bs:tBlobstream;
begin
openDlg := TOpenDialog.Create(nil);
openDlg.Filter := '*.dwg|*.dwg';
if openDlg.Execute then
begin
fileName := openDlg.FileName;
extName := ExtractFileExt(fileName);

if not Session.Databases[0].InTransaction then
Session.Databases[0].StartTransaction;
if not Table1.Active then
Table1.Open;
Table1.Append;
Table1.FieldByName('bh_ydd').AsString :=

'052004020046';
Table1.FieldByName('ydqhbz').AsInteger := 0;
Table1.FieldByName('xh').asinteger := getxh;
Table1.FieldByName('ydtzlx').asstring :=

extname;
if uppercase(extName) = '.DWG' then
begin
ms := TMemoryStream.Create;
ms.LoadFromFile(filename);
ms.Position := 0;
bs :=

tBlobstream.create(Table1.FieldByName('tz_yd') as

tblobfield, bmwrite);
//ms.SaveToStream(bs);
BS.CopyFrom(ms,0);
Table1.Post;
ms.Free;
end;
end;
opendlg.Free;
end;

procedure TForm2.BitBtn2Click(Sender: TObject);
var
FileName, ExtName:string;
SaveDlg: TSaveDialog;
ms:TMemoryStream;
bs:tBlobstream;
begin
with ttable.create(nil) do
begin
databasename := 'symint';
tablename := 'SC_YD_YDSMTZ';
filter := 'bh_ydd = 052004020046 AND XH = ' +

Table1.FIELDBYNAME('XH').ASSTRING;
filtered := true;
open;
if isempty then exit;
SaveDlg := TSaveDialog.Create(nil);
SaveDlg.Filter := '*.dwg|*.dwg';
if SaveDlg.Execute then
begin
FileName := SaveDlg.FileName;
ExtName := '.dwg';
ms := TMemoryStream.Create;
bs :=

tBlobstream.create(FieldByName('tz_yd') as tblobfield,

bmread);
ms.copyfrom(bs, 0);
//ms.LoadFromFile('d:/1.dwg');
ms.Position := 0;
ms.SaveToFile(FileName + ExtName);
bs.Free;
ms.free;
end;
end;
SaveDlg.Free;
end;

该问题前面好象也有提出,但是我没有找到答案

分不多,但会尽量发给各位提供解决办法的大大们。
 
而且我把保存前的文件和保存后的文件
用文字编辑器打开,粗略看了一下,应该是一摸一样啊
真奇怪

 
哈,解决了

把数据库中的字段类型由bolb改为long raw就ok了

但是原因不清楚,希望知道的指教一下
 
后退
顶部