中间层源码:
function TSvr.getInfo(...): TSOAPAttachment;
var
attach: TSOAPAttachment;
Query: TAdoquery;
Connection1: TADOConnection;
sTmp: string;
begin
Result := nil;
try
try
Connection1 := TADOConnection.Create(nil);
Connection1.LoginPrompt := false;
Connection1.ConnectionString := sConn;
Connection1.Open;
query := tadoquery.Create(nil);
Query.Connection := Connection1;
with Query do
begin
sTmp := 'Select ...';
SQL.Text := sTmp;
Prepared;
Open();
end;
except
raise ERemotableException.Create('数据库连接错误2' + sTmp);
exit;
end;
attach := ADOQuery2Attachment(query);
if attach = nil then
begin
raise ERemotableException.Create('数据转换错误');
exit;
end;
Result := attach;
finally
{ query.Close;
connection.Close;
query.Free;
connection.Free; }
end;
end;function ADOQuery2Attachment(query: TADOQuery): TSOAPAttachment;
var
buf: array[0..255] of AnsiChar;
tempfile, zippedfile: string;
z: TZippor;
attach: TSOAPAttachment;
mem: TMemoryStream;
begin
Result := nil; if query = nil then exit; if not query.Active then exit; GetTempPath(256, buf);
GetTempFileName(buf, 'TTC' + chr(0), 0, buf);
tempfile := string(buf);
-------------------1
query.SaveToFile(tempfile);
-------------------1
try
z := TZippor.Create;
try
GetTempPath(256, buf);
GetTempFileName(buf, 'TTC' + chr(0), 0, buf);
zippedfile := string(buf);
z.CompressFile(tempfile, zippedfile);
raise ERemotableException.Create('数据库连接错误3');
try
mem := TMemoryStream.Create;
mem.LoadFromFile(zippedfile); attach := TSOAPAttachment.Create;
attach.SetSourceStream(mem);
raise ERemotableException.Create('数据库连接错误4');
Result := attach; finally
DeleteFile(zippedfile);
end;
finally
z.Free;
end; finally
DeleteFile(tempfile);
end;end;
上面的代码是用于传输数据集的,但在执行到query.SaveToFile(tempfile);
时出错,就是保存不了,提示什么"%1已经存在!"
请各位高手赐教!!!
function TSvr.getInfo(...): TSOAPAttachment;
var
attach: TSOAPAttachment;
Query: TAdoquery;
Connection1: TADOConnection;
sTmp: string;
begin
Result := nil;
try
try
Connection1 := TADOConnection.Create(nil);
Connection1.LoginPrompt := false;
Connection1.ConnectionString := sConn;
Connection1.Open;
query := tadoquery.Create(nil);
Query.Connection := Connection1;
with Query do
begin
sTmp := 'Select ...';
SQL.Text := sTmp;
Prepared;
Open();
end;
except
raise ERemotableException.Create('数据库连接错误2' + sTmp);
exit;
end;
attach := ADOQuery2Attachment(query);
if attach = nil then
begin
raise ERemotableException.Create('数据转换错误');
exit;
end;
Result := attach;
finally
{ query.Close;
connection.Close;
query.Free;
connection.Free; }
end;
end;function ADOQuery2Attachment(query: TADOQuery): TSOAPAttachment;
var
buf: array[0..255] of AnsiChar;
tempfile, zippedfile: string;
z: TZippor;
attach: TSOAPAttachment;
mem: TMemoryStream;
begin
Result := nil; if query = nil then exit; if not query.Active then exit; GetTempPath(256, buf);
GetTempFileName(buf, 'TTC' + chr(0), 0, buf);
tempfile := string(buf);
-------------------1
query.SaveToFile(tempfile);
-------------------1
try
z := TZippor.Create;
try
GetTempPath(256, buf);
GetTempFileName(buf, 'TTC' + chr(0), 0, buf);
zippedfile := string(buf);
z.CompressFile(tempfile, zippedfile);
raise ERemotableException.Create('数据库连接错误3');
try
mem := TMemoryStream.Create;
mem.LoadFromFile(zippedfile); attach := TSOAPAttachment.Create;
attach.SetSourceStream(mem);
raise ERemotableException.Create('数据库连接错误4');
Result := attach; finally
DeleteFile(zippedfile);
end;
finally
z.Free;
end; finally
DeleteFile(tempfile);
end;end;
上面的代码是用于传输数据集的,但在执行到query.SaveToFile(tempfile);
时出错,就是保存不了,提示什么"%1已经存在!"
请各位高手赐教!!!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货