我在将dbgrid的内容保存到word的时候,如果表格内有的数据项为空就会报错,这怎么解决?
下面是我的程序:
procedure TForm1.Button7Click(Sender: TObject);
var
WordApp,WordDoc,WordTable:OleVariant;
i,j:integer;
begin
WordApp:=CreateOleObject('Word.Application');
WordApp.Visible:=True;
WordDoc:=WordApp.Documents.Add;
WordTable:=WordDoc.Tables.Add(WordApp.Selection.Range,DBGrid8.DataSource.DataSet.RecordCount+1,DBGrid8.Columns.Count);
for i:=1 to DBGrid8.Columns.Count do
WordTable.Cell(1,i).Range.InsertAfter(DBGrid8.Columns[i-1].Title.Caption);
i:=2;
with DBGrid8.DataSource.DataSet do
while not eof do
begin
for j:=1 to DBGrid8.Columns.Count do
WordTable.Cell(i,j).Range.InsertAfter(DBGrid8.Columns[j-1].Field.Value);
Next;
Inc(i);
end;
end;
下面是我的程序:
procedure TForm1.Button7Click(Sender: TObject);
var
WordApp,WordDoc,WordTable:OleVariant;
i,j:integer;
begin
WordApp:=CreateOleObject('Word.Application');
WordApp.Visible:=True;
WordDoc:=WordApp.Documents.Add;
WordTable:=WordDoc.Tables.Add(WordApp.Selection.Range,DBGrid8.DataSource.DataSet.RecordCount+1,DBGrid8.Columns.Count);
for i:=1 to DBGrid8.Columns.Count do
WordTable.Cell(1,i).Range.InsertAfter(DBGrid8.Columns[i-1].Title.Caption);
i:=2;
with DBGrid8.DataSource.DataSet do
while not eof do
begin
for j:=1 to DBGrid8.Columns.Count do
WordTable.Cell(i,j).Range.InsertAfter(DBGrid8.Columns[j-1].Field.Value);
Next;
Inc(i);
end;
end;
try//预防数据为空提取出错,捕获异常
WordTable.Cell(i,j).Range.InsertAfter(DBGrid8.Columns[j-1].Field.Value);
except
end;
Next;
var
s : string;
for j:=1 to DBGrid8.Columns.Count do
try//预防数据为空提取出错,捕获异常
s:=DBGrid8.Columns[j-1].Field.asstring;
---如果string为空的话,就把空格之类的赋给string
except
end;
WordTable.Cell(i,j).Range.InsertAfter(s);
Next;
for j:=1 to DBGrid8.Columns.Count do
try//预防数据为空提取出错,捕获异常
s:=DBGrid8.Columns[j-1].Field.asstring;
if s='' then
s:=' ';
except
end;
WordTable.Cell(i,j).Range.InsertAfter(s);
Next;
下面是我的程序,贴出来给大家参考:
procedure TForm1.Button7Click(Sender: TObject);
var
WordApp,WordDoc,WordTable:OleVariant;
i,j:integer;
s:string;
begin
WordApp:=CreateOleObject('Word.Application');
WordApp.Visible:=True;
WordDoc:=WordApp.Documents.Add;
WordTable:=WordDoc.Tables.Add(WordApp.Selection.Range,DBGrid8.DataSource.DataSet.RecordCount+1,DBGrid8.Columns.Count);
for i:=1 to DBGrid8.Columns.Count do
WordTable.Cell(1,i).Range.InsertAfter(DBGrid8.Columns[i-1].Title.Caption);
i:=2;
with DBGrid8.DataSource.DataSet do
while not eof do
begin
for j:=1 to DBGrid8.Columns.Count do
begin
try//预防数据为空提取出错,捕获异常
begin
s:=DBGrid8.Columns[j-1].Field.asstring;
if s='' then
s:=' ';
end;
except
end;
WordTable.Cell(i,j).Range.InsertAfter(s);
end;
Next; Inc(i); end;
end;