Access violation at address 00561622 in module 出错附源码

jxbw7408 2008-11-05 04:49:14
procedure Tkuoca.LbButton2Click(Sender: TObject);//查询数据
var
sqltr:string;
begin
Sqltr:='';
if Edit1.text<>'' then
Sqltr:=sqltr+' and KK.编码 like ''%'+Edit1.text+'%''';
if Edit2.text<>'' then
Sqltr:=sqltr+' and goods.名称 like ''%'+Edit2.text+'%''';
if Edit3.text<>'' then
Sqltr:=sqltr+' and goods.规格 like ''%'+Edit3.text+'%''';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.text:='SELECT KK.编码, goods.名称, goods.规格, goods.单位, goods.入价 as 单价, KK.pp as 数量,goods.备注';
ADOQuery1.SQL.Add ('from [select 编码,sum(AA) as pp ');
ADOQuery1.SQL.Add ('from (select 编码,-盘亏 as AA ');
ADOQuery1.SQL.Add ('from inoutdl ');
ADOQuery1.SQL.Add ('union all ');
ADOQuery1.SQL.Add ('select 编码,-数量 as BB ');
ADOQuery1.SQL.Add ('from putoutdl ');
ADOQuery1.SQL.Add ('union all ');
ADOQuery1.SQL.Add ('select 编码,-数量 as CC ');
ADOQuery1.SQL.Add ('from smxdl ');
ADOQuery1.SQL.Add ('union all ');
ADOQuery1.SQL.Add ('select 编码,数量 ');
ADOQuery1.SQL.Add ('from putindl) TT ');
ADOQuery1.SQL.Add ('group by 编码]. AS KK, goods ');
ADOQuery1.SQL.Add ('WHERE KK.编码=goods.编码');
ADOQuery1.SQL.Add (sqltr);
ADOQuery1.Open;
end;

procedure Tkuoca.LbButton1Click(Sender: TObject);导出数据
var
j:integer;
filename: string;
MSExcel,xlsheet,xlBook : Variant; //ole ComObj
begin
IF DBGrid1.Fields[0].AsString='' then
begin
Application.MessageBox('列表为空,无法导出!','错误操作',MB_OK+MB_ICONError);
exit;
end;
//导出数据

SaveDialog1.FileName:='库存数据 '+datetostr(now);
if SaveDialog1.Execute then
begin
filename := concat(SaveDialog1.FileName,'.xls');
try
MSExcel:=CreateOLEObject('Excel.Application');
xlBook:=MSExcel.WorkBooks.Add;
xlsheet:=xlBook.Worksheets['sheet1'];
xlsheet.Cells.item[1,1]:='编码';
xlsheet.Cells.item[1,2]:='名称';
xlsheet.Cells.item[1,3]:='规格';
xlsheet.Cells.item[1,4]:='单位';
xlsheet.Cells.item[1,5]:='单价';
xlsheet.Cells.item[1,6]:='结存';
xlsheet.Cells.item[1,7]:='备注';
j:=1;
adoquery1.First;
while not ADOQuery1.Eof do begin
DBGrid1.SelectedRows.CurrentRowSelected:=True;
xlsheet.Cells.item[j+1,1]:=DBGrid1.Fields[0].AsString;
xlsheet.Cells.item[j+1,2]:=DBGrid1.Fields[1].AsString;
xlsheet.Cells.item[j+1,3]:=DBGrid1.Fields[2].AsString;
xlsheet.Cells.item[j+1,4]:=DBGrid1.Fields[3].AsString;
xlsheet.Cells.item[j+1,5]:=DBGrid1.Fields[4].AsString;
xlsheet.Cells.item[j+1,6]:=DBGrid1.Fields[5].AsString;
xlsheet.Cells.item[j+1,7]:=DBGrid1.Fields[6].AsString;
ADOQuery1.Next;
j:=J+1;
end;//while
xlBook.SaveAs(filename);
MSExcel.WorkBooks.close;
MSExcel.Quit;
MSExcel:=unassigned;
showmessage('库存数据导出成功!');
except
Application.Messagebox('Excel没有安装!','错误提示',MB_ICONERROR+mb_Ok);
exit;
end;//try
end;// end if SaveDialog1.Execute then

end;



在点击查询后导出数据时出错
...全文
91 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxbw7408 2008-11-05
  • 打赏
  • 举报
回复
我的SQL语句里有一个

KK.pp as 数量 提示找不到字段 数量


还有一个ExcelApp.Cells(2,6) := Title; 里面的Title找不到...
genispan 2008-11-05
  • 打赏
  • 举报
回复
跟踪一下 哪出错啊
fangsp 2008-11-05
  • 打赏
  • 举报
回复
procedure DBgridToExcel(Title:String;DBGrid:TDBGrid;); 
var
strName,sFilePath ,xlsFileName : string ;
ExcelApp,WorkBook:Variant;
i,j:Integer;
Row,Col:Integer;
FieldName:string;
DataSet:TDataSet;
S:String;
begin
sFilePath := ExtractFilePath(Application.ExeName);
xlsFileName := '数据信息' + '.xls' ;
try
ExcelApp := CreateOleObject('Excel.Application');
WorkBook := CreateOleObject('Excel.Sheet');
except
Application.MessageBox('你的机器里未安装Microsoft Excel. ','提示',MB_OK+MB_ICONINFORMATION);
Exit;
end;
Application.ProcessMessages;
WorkBook := ExcelApp.WorkBooks.Add;
ExcelApp.Cells(2,6) := Title;
DataSet := DBGrid.DataSource.DataSet;
Col := 1;
Row := 4;
for I := 0 to DBGrid.Columns.Count - 1 do
begin
if DBGrid.Columns[I].Visible then
begin
FieldName := DBGrid.Columns[I].Title.Caption;
ExcelApp.Cells(Row,Col) := FieldName;
Col := Col + 1;
end;
end;

Row := Row + 1;

DataSet.First;
while not DataSet.Eof do
begin
Col := 1;
for J := 0 to DBGrid.Columns.Count - 1 do
begin
FieldName := DBGrid.Columns[J].FieldName;
ExcelApp.ActiveSheet.Columns[Col].EntireColumn.AutoFit;
ExcelApp.Columns[Col].NumberFormatLocal:='@';
ExcelApp.Cells(Row, Col) := ' ' + DataSet.FieldByName(FieldName).AsString + ' ';
Col := Col + 1;
end;
Row := Row + 1;
DataSet.Next;
end;

strName := sFilePath + xlsFileName ;
try
WorkBook.SaveAs(strName, 56); // Office Excel 97-2003 format
Except
IsMessageBox := false ;
End;
WorkBook.Close;
ExcelApp.Quit;
ExcelApp := Unassigned;
Application.MessageBox('数据导出成功! ', '信息提示', MB_APPLMODAL or MB_ICONINFORMATION or MB_OK);
end;
fangsp 2008-11-05
  • 打赏
  • 举报
回复
procedure TMainFrm.DBgridToExcel(Title:String;DBGrid:TDBGrid;);
var
strName,sFilePath ,xlsFileName : string ;
ExcelApp,WorkBook:Variant;
i,j:Integer;
Row,Col:Integer;
FieldName:string;
DataSet:TDataSet;
S:String;
begin
sFilePath := ExtractFilePath(Application.ExeName);
xlsFileName := '数据信息' + '.xls' ;
try
ExcelApp := CreateOleObject('Excel.Application');
WorkBook := CreateOleObject('Excel.Sheet');
except
Application.MessageBox('你的机器里未安装Microsoft Excel. ','提示',MB_OK+MB_ICONINFORMATION);
Exit;
end;
Application.ProcessMessages;
WorkBook := ExcelApp.WorkBooks.Add;
ExcelApp.Cells(2,6) := Title;
DataSet := DBGrid.DataSource.DataSet;
Col := 1;
Row := 4;
for I := 0 to DBGrid.Columns.Count - 1 do
begin
if DBGrid.Columns[I].Visible then
begin
FieldName := DBGrid.Columns[I].Title.Caption;
ExcelApp.Cells(Row,Col) := FieldName;
Col := Col + 1;
end;
end;

Row := Row + 1;

DataSet.First;
while not DataSet.Eof do
begin
Col := 1;
for J := 0 to DBGrid.Columns.Count - 1 do
begin
FieldName := DBGrid.Columns[J].FieldName;
ExcelApp.ActiveSheet.Columns[Col].EntireColumn.AutoFit;
ExcelApp.Columns[Col].NumberFormatLocal:='@';
ExcelApp.Cells(Row, Col) := ' ' + DataSet.FieldByName(FieldName).AsString + ' ';
Col := Col + 1;
end;
Row := Row + 1;
DataSet.Next;
end;

strName := sFilePath + xlsFileName ;
try
WorkBook.SaveAs(strName, 56); // Office Excel 97-2003 format
Except
IsMessageBox := false ;
End;
WorkBook.Close;
ExcelApp.Quit;
ExcelApp := Unassigned;
Application.MessageBox('数据导出成功! ', '信息提示', MB_APPLMODAL or MB_ICONINFORMATION or MB_OK);
end;

这是我以前导入的程序 你参考一下

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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