procedure TForm1.Button1Click(Sender: TObject);
var
  strSQL:string;
begin
  if savedialog1.execute then
  begin
  try
    strSQL:='select * into [Excel 8.0;database='+savedialog1.filename+'].[sheet1] from ORDERS';
    // strSQL:='select * into abc from ORDERS';
    ADOConnection1.Connected:=false;
    ADOConnection1.Execute(strSQL);
    showmessage('Successful');
    ADOConnection1.Connected:=true;
  except
    on e:exception do
    memo1.Text:=e.Message;
  end;
  end;
end;
将信息保存到Excel为什么出错???????
如果改用一条SQL语句,可以往SQL Server2000插入一个abc表,是可以成功啊!
有那位做通过采用SaveDialog控件把DBGrid中的记录输出到Excel的例子,请给出来参考一下啊?

解决方案 »

  1.   

    ADOConnection1.Execute(strSQL)
    没见到这么用过,但一般来讲,查询语句一般使用open,如adoquery.open,执行查询,删除等语句时才使用execute
      

  2.   

    这样是可以的啊.只是保存到Excel中出了错啊.
      

  3.   

    strSQL:='select * into [Excel 8.0;database='+savedialog1.filename+'].[sheet1] from ORDERS';
    这一句有错误啊!!!
      

  4.   

    刚发了一个,再发一次!能解决你的问题。
    我的方法:
    放一个SaveDialog。 filter 设置为 :报表格式|*.xls
    function xlsORtxt(dataset:tdataset;filename:string):boolean;
    var
    f:textfile;
    tempstr:string;
    i,j:integer;
    begin
      try
      dataset.DisableControls;
      assignfile(f,filename);
      rewrite(f);
      dataset.First;
      tempstr:='';
      for i:=0 to dataset.FieldCount-1 do
      tempstr:=tempstr+dataset.Fields[i].FieldName+#9;
      writeln(f,tempstr);
      for i:=0 to dataset.RecordCount-1 do
        begin
          tempstr:='';
          for j:=0 to dataset.Fields.Count-1 do
            tempstr:=tempstr+dataset.fields[j].AsString+#9;
          writeln(f,tempstr);
          dataset.Next;
        end;
      result:=true;
      closefile(f);
    except
    closefile(f);
    result:=false;
    end;
    end;procedure TqueryForm.BitBtn3Click(Sender: TObject);
    begin
      with savedialog1 do
         if execute then
         begin
       if xlsORtxt(proc,filename) then   ///proc 就是数据源,当然也可以改为query 。   MessageBox(0,'数据已经保存!','系统提示',MB_OK+MB_ICONWARNING)
    else
        MessageBox(0,'数据库无法保存,请联系管理员!','系统提示',MB_OK+MB_ICONWARNING);
    end;
    end;
      

  5.   

    整个程序关键就在于
    with savedialog1 do
       if execute then
         begin
       if xlsORtxt(proc,filename) then   ///proc 就是数据源,当然也可以改为query 。   MessageBox(0,'数据已经保存!','系统提示',MB_OK+MB_ICONWARNING)
    else
        MessageBox(0,'数据库无法保存,请联系管理员!','系统提示',MB_OK+MB_ICONWARNING);
    end;
    对于savedialog1就是要对execute这个布尔变量进行判断,我也刚刚做了个类似的程序,只是来晚一步,同意zahahui(zahahui)的写法。
      

  6.   

    也同样谢谢biao_227().
    同你交个朋友吧.
    我的QQ同上.