[错误] Unit1.pas(127): Undeclared identifier: 'SaveDialog1'
[错误] Unit1.pas(127): Missing operator or semicolon
[错误] Unit1.pas(129): Missing operator or semicolon
[错误] Unit1.pas(131): 'THEN' expected but identifier 'Execute' found
[致命错误] Project1.dpr(5): Could not compile used unit 'Unit1.pas'代码:unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, ADODB, StdCtrls, DBTables, ComObj;type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
DBGrid1: TDBGrid;
Button1: TButton;
DataSource1: TDataSource;
Button2: TButton;
ADOQuery1: TADOQuery;
Button3: TButton;
SaveDialog1: TSaveDialog;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject); private
{ Private declarations }
public
{ Public declarations } end;
function ExportDBGrid(DBGrid: TDBGrid; SheetName: string): boolean;
var
Form1: TForm1;implementation
{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
beginADOConnection1.Connected := True;
ADOConnection1.Execute('Select * Into 21 From [Text;Database=e:\].a.txt');
end;procedure TForm1.Button2Click(Sender: TObject);
begin
DBGrid1.DataSource:=DataSource1;
DataSource1.DataSet:=ADOQuery1;
ADOQuery1.Connection:=ADOConnection1;
ADOQuery1.Close;
ADOquery1.Sql.Text := 'SELECT * from sp';
ADOquery1.Open;
end;function ExportDBGrid(DBGrid: TDBGrid; SheetName: string): boolean;
varc, r, i, j: integer;app: Olevariant;TempFileName, ResultFileName: string;begintry result := True; app := CreateOLEObject('Excel.application'); // app.WorkBooks.Add(xlWBatWorkSheet); except Application.MessageBox('Excel没有正确安装!','警告',MB_OK); result := False; exit; end; SaveDialog1.DefaultExt := 'xls'; SaveDialog1.FileName := SheetName; if SaveDialog1.Execute then TempFileName := SaveDialog1.FileName else Exit; app.Workbooks.add; app.Visible := false; Screen.Cursor := crHourGlass; DBGrid.DataSource.DataSet.First; c := DBGrid.DataSource.DataSet.FieldCount; r := DBGrid.DataSource.DataSet.RecordCount; Application.ProcessMessages; for i := 0 to c - 1 do app.cells(1, 1 + i) := DBGrid.DataSource.DataSet.Fields[i].DisplayLabel; for j := 1 to r do begin for i := 0 to c - 1 do app.cells(j + 1, 1 + i) := DBGrid.DataSource.DataSet.Fields[i].AsString; DBGrid.DataSource.DataSet.Next; end; ResultFileName := TempFileName; if ResultFileName = '' then ResultFileName := '数据导出'; if FileExists(TempFileName) then DeleteFile(TempFileName); app.Activeworkbook.saveas(TempFileName); app.Activeworkbook.close(false); app.quit; app := unassigned;end;end.
[错误] Unit1.pas(127): Missing operator or semicolon
[错误] Unit1.pas(129): Missing operator or semicolon
[错误] Unit1.pas(131): 'THEN' expected but identifier 'Execute' found
[致命错误] Project1.dpr(5): Could not compile used unit 'Unit1.pas'代码:unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, ADODB, StdCtrls, DBTables, ComObj;type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
DBGrid1: TDBGrid;
Button1: TButton;
DataSource1: TDataSource;
Button2: TButton;
ADOQuery1: TADOQuery;
Button3: TButton;
SaveDialog1: TSaveDialog;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject); private
{ Private declarations }
public
{ Public declarations } end;
function ExportDBGrid(DBGrid: TDBGrid; SheetName: string): boolean;
var
Form1: TForm1;implementation
{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
beginADOConnection1.Connected := True;
ADOConnection1.Execute('Select * Into 21 From [Text;Database=e:\].a.txt');
end;procedure TForm1.Button2Click(Sender: TObject);
begin
DBGrid1.DataSource:=DataSource1;
DataSource1.DataSet:=ADOQuery1;
ADOQuery1.Connection:=ADOConnection1;
ADOQuery1.Close;
ADOquery1.Sql.Text := 'SELECT * from sp';
ADOquery1.Open;
end;function ExportDBGrid(DBGrid: TDBGrid; SheetName: string): boolean;
varc, r, i, j: integer;app: Olevariant;TempFileName, ResultFileName: string;begintry result := True; app := CreateOLEObject('Excel.application'); // app.WorkBooks.Add(xlWBatWorkSheet); except Application.MessageBox('Excel没有正确安装!','警告',MB_OK); result := False; exit; end; SaveDialog1.DefaultExt := 'xls'; SaveDialog1.FileName := SheetName; if SaveDialog1.Execute then TempFileName := SaveDialog1.FileName else Exit; app.Workbooks.add; app.Visible := false; Screen.Cursor := crHourGlass; DBGrid.DataSource.DataSet.First; c := DBGrid.DataSource.DataSet.FieldCount; r := DBGrid.DataSource.DataSet.RecordCount; Application.ProcessMessages; for i := 0 to c - 1 do app.cells(1, 1 + i) := DBGrid.DataSource.DataSet.Fields[i].DisplayLabel; for j := 1 to r do begin for i := 0 to c - 1 do app.cells(j + 1, 1 + i) := DBGrid.DataSource.DataSet.Fields[i].AsString; DBGrid.DataSource.DataSet.Next; end; ResultFileName := TempFileName; if ResultFileName = '' then ResultFileName := '数据导出'; if FileExists(TempFileName) then DeleteFile(TempFileName); app.Activeworkbook.saveas(TempFileName); app.Activeworkbook.close(false); app.quit; app := unassigned;end;end.
解决方案 »
- 用delphi做了个接收串口数据的程序,16进制的数据接收过来后怎么转成10进制的?
- 找错误。
- 比较的问题.为什么会显示相同.但比较就变了不同呢?
- delphi中xml节点属性内容的类型问题
- 请问在delphi中如何进行多字段的组合查询?
- 如何获得SQLSERVER中所有数据库名称的列表
- 在fastReport中如何使用自定义常量和Delphi自带的函数.....分不够开贴再加
- 如何在DBGRID裡面加點選框﹖
- 问题一波接一波,消息机制下怎样才能让窗体只创建一次,销毁一次。
- installshield express for delphi5 打包的问题。
- 恭喜 shuihan20e 升二星
- COM 挂接IE事件
其他的错误都是语法错误,自己再看一下吧
ADOConnection1: TADOConnection;
DBGrid1: TDBGrid;
Button1: TButton;
DataSource1: TDataSource;
Button2: TButton;
ADOQuery1: TADOQuery;
Button3: TButton;
SaveDialog1: TSaveDialog;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
這個函數定義的位置有問題,它根本不在窗體的類之內,所以它也就無法訪問savedialog1這個控件,所以才會報這個錯。你把這個函數定義在窗體的public或是private裏面吧
可以不用静态组件,直接动态创建,不过记得函数最后释放动态创建的组件~~
function ExportDBGrid(DBGrid: TDBGrid; SheetName: string): boolean;
var
c, r, i, j: integer;
app: Olevariant;
TempFileName, ResultFileName: string;
SaveDialog1: TSaveDialog;
begin
savedialog1:=tsavedialog.Create(self);
代码
savedialog1.free;
end;
外部方法怎么可能跨过类直接访问?外部方法里var一个变量好了,create一次
多谢了,问题解决了
function TForm1.ExportDBGrid(DBGrid: TDBGrid; SheetName: string): boolean;
这样就可以了,晕菜