⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 45.txt

📁 该源码程序使用DELPHI连接EXCEL数据表并查询生成新的表单及一些EXCEL调用函数
💻 TXT
📖 第 1 页 / 共 2 页
字号:
SQl   查询语句:SELECT   *   FROM   OPENDATASOURCE( 'Microsoft.Jet.OLEDB.4.0 ', 'Data   Source= "d:/Example.xls ";Extended   Properties=Excel   8.0 ')...APC   DC$ 

报错: 
Server:   Msg   7314,   Level   16,   State   1,   Line   1 
OLE   DB   provider   'Microsoft.Jet.OLEDB.4.0 '   does   not   contain   table   'APCDC$ '.     The   table   either   does   not   exist   or   the   current   user   does   not   have   permissions   on   that   table. 
OLE   DB   error   trace   [Non-interface   error:     OLE   DB   provider   does   not   contain   the   table:   ProviderName= 'Microsoft.Jet.OLEDB.4.0 ',   TableName= 'APCDC$ ']. 

我用的是Excel2003,SQL2000 
另外,SQL表如何连接Excel表查询,他们有一个共同的字段 
 
 
问题点数:20 回复次数:18 显示所有回复显示星级回复显示楼主回复     
 

lwl0606 
寒泉 
等 级:
 发表于:2007-09-24 11:20:231楼 得分:0 
SELECT   *   FROM   OPENDATASOURCE( 'Microsoft.Jet.OLEDB.4.0 ', 'Data   Source= "d:/Example.xls ";Extended   Properties=Excel   8.0 ')...[APC   DC$] 
加个括号试试 
 
   
 
lwl0606 
寒泉 
等 级:
 发表于:2007-09-24 11:22:582楼 得分:8 
SELECT   *   FROM   OPENDATASOURCE( 'Microsoft.Jet.OLEDB.4.0 ', 'Data   Source= "d:\Example.xls ";Extended   Properties=Excel   8.0 ')...[APC   DC$] 
斜线画反了 
 
   
 
lwl0606 
寒泉 
等 级:
 发表于:2007-09-24 11:24:473楼 得分:0 
也可以用 

SELECT   * 
  FROM   OPENROWSET( 'Microsoft.Jet.OLEDB.4.0 ', 'Excel   8.0;Database=d:\Example.xls ',[APC   DC$]) 

连接表 
SELECT   a.*,b.id   as   id1 
  FROM   OPENROWSET( 'Microsoft.Jet.OLEDB.4.0 ', 'Excel   8.0;Database=d:\Example.xls ',[APC   DC$])   a   inner   join   table1   on   a.id=table1.id 
 
 
   
 
raulvim 
 
等 级:
 发表于:2007-09-24 13:48:084楼 得分:0 
寒泉兄弟,斜线改正之后用的Excel2000可以执行成功(家里的电脑).办公室的Excel2003,SQL2000下仍然报错: 
Server:   Msg   7314,   Level   16,   State   1,   Line   1 
OLE   DB   provider   'Microsoft.Jet.OLEDB.4.0 '   does   not   contain   table   'APCDC$ '.     The   table   either   does   not   exist   or   the   current   user   does   not   have   permissions   on   that   table. 
OLE   DB   error   trace   [Non-interface   error:     OLE   DB   provider   does   not   contain   the   table:   ProviderName= 'Microsoft.Jet.OLEDB.4.0 ',   TableName= 'APCDC$ ']. 

另外3表连接查询仍然需要请教你 
 
   
 
raulvim 
 
等 级:
 发表于:2007-09-24 13:50:295楼 得分:0 
两个SQL表和一个Excel表有共同字段 
 
   
 
winjay84 
绿绿的蛋挞 
等 级:
 发表于:2007-09-24 13:57:596楼 得分:0 
3表连接查询: 


SELECT   a.*,b.id   as   id1 
  FROM   OPENROWSET( 'Microsoft.Jet.OLEDB.4.0 ', 'Excel   8.0;Database=d:\Example.xls ',[APC   DC$])   a   
  inner   join   table1   on   a.id=table1.id       --   共同字段 
  inner   join   table2   on   a.id=table2.id       --   共同字段 
 
   
 
raulvim 
 
等 级:
 发表于:2007-09-24 13:58:157楼 得分:0 
SELECT   * 
  FROM   OPENROWSET( 'Microsoft.Jet.OLEDB.4.0 ', 'Excel   8.0;Database=d:\Example.xls ',[APCDC$]) 

同样报错: 
Server:   Msg   7399,   Level   16,   State   1,   Line   1 
OLE   DB   provider   'Microsoft.Jet.OLEDB.4.0 '   reported   an   error.   The   provider   did   not   give   any   information   about   the   error. 
OLE   DB   error   trace   [OLE/DB   Provider   'Microsoft.Jet.OLEDB.4.0 '   IDBInitialize::Initialize   returned   0x80004005:     The   provider   did   not   give   any   information   about   the   error.]. 

PS:我把表名去掉了空格,即APCDC 
 
   
 
wgzaaa 
 
等 级:
 发表于:2007-09-24 14:02:228楼 得分:0 
导入时要把导入的excel关闭 
 
   
 
raulvim 
 
等 级:
 发表于:2007-09-24 14:14:399楼 得分:0 
导入时要把导入的excel关闭? 
不是导入,是连接查询 
 
 
   
 
wgzaaa 
 
等 级:
 发表于:2007-09-24 14:16:4010楼 得分:0 
查询也要关闭 
 
   
 
winjay84 
绿绿的蛋挞 
等 级:
 发表于:2007-09-24 14:37:2611楼 得分:0 
SELECT   *   

FROM   OpenDataSource(   'Microsoft.Jet.OLEDB.4.0 ' 
, 'Data   Source= "d:\Example.xls ";User   ID=Admin;Password=;Extended   properties=Excel   5.0 ')...[APCDC$] 
 
   
 
issacp 
舉杯笑看人生 
等 级:
 发表于:2007-09-24 15:05:4412楼 得分:10 
回复人:raulvim()   (   二级(初级))   信誉:100   2007-9-24   13:48:08   得分:0 

寒泉兄弟,斜线改正之后用的Excel2000可以执行成功(家里的电脑).办公室的Excel2003,SQL2000下仍然报错: 
Server:   Msg   7314,   Level   16,   State   1,   Line   1 
OLE   DB   provider   'Microsoft.Jet.OLEDB.4.0 '   does   not   contain   table   'APCDC$ '.   The   table   either   does   not   exist   or   the   current   user   does   not   have   permissions   on   that   table. 
OLE   DB   error   trace   [Non-interface   error:   OLE   DB   provider   does   not   contain   the   table:   ProviderName= 'Microsoft.Jet.OLEDB.4.0 ',   TableName= 'APCDC$ ']. 

另外3表连接查询仍然需要请教你 

=========================================================== 
Data   Source= "d:\Example.xls "原因是由於這一句中的D盤是指服務器的D盤,而不是你當前電腦的D盤 
 
   
 
raulvim 
 
等 级:
 发表于:2007-09-24 16:58:4013楼 得分:0 
樓上說的對。但是3個表的連接查詢該如何做呢 
 
   
 
raulvim 
 
等 级:
 发表于:2007-09-24 17:31:2014楼 得分:0 
SELECT   a.*,b.id   as   id1 
  FROM   OPENROWSET( 'Microsoft.Jet.OLEDB.4.0 ', 'Excel   8.0;Database=d:\Example.xls ',[APC   DC$])   a   
  inner   join   table1   on   a.id=table1.id       --   共同字段 
  inner   join   table2   on   a.id=table2.id       --   共同字段 

报错: 
Server:   Msg   107,   Level   16,   State   2,   Line   1 
The   column   prefix   'b '   does   not   match   with   a   table   name   or   alias   name   used   in   the   query. 
 
 
   
 
raulvim 
 
等 级:
 发表于:2007-09-24 17:37:1315楼 得分:0 
SELECT   a.*,b.id   as   id1,c.num 
  FROM   OPENROWSET( 'Microsoft.Jet.OLEDB.4.0 ', 'Excel   8.0;Database=d:\Example.xls ',[APC   DC$])   a   
  inner   join   table1   b   on   a.id=b.id       --   共同字段 
  inner   join   table2     c   on   a.id=c.id       --   共同字段 


這樣測試就通過了。謝謝! 
 
   
 
brother2605 
幽灵 
等 级:
 发表于:2007-09-24 17:40:5416楼 得分:2 
SQl   查询语句:SELECT   *   FROM   OPENDATASOURCE( 'Microsoft.Jet.OLEDB.4.0 ', 'Data   Source= "d:/Example.xls ";Extended   Properties=Excel   8.0 ')...APC   DC$ 
------------------------------------------------------------ 
用OPENDATASOURCE   要加上用户名和密码,User   ID=Admin;Password=;上面的错误里面已经告诉你了。 
OPENDATASOURCE( '驱动名称 ', '连接字符串 '),以你上面的为例: 
SELECT   *   FROM   OPENDATASOURCE( 'Microsoft.Jet.OLEDB.4.0 ', 'Data   Source= "d:\Example.xls ";User   ID=Admin;Password=;Extended   Properties=Excel   8.0 ')...APC   DC$ 
使用OPENROWSET则不需要 
SELECT   *   FROM   OPENROWSET( 'Microsoft.Jet.OLEDB.4.0 ', 'Excel   8.0;Database= "d:\Example.xls ',[APC   DC$]) 
 
   
 
raulvim 
 
等 级:
 发表于:2007-09-24 17:54:3917楼 得分:0 
楼上是寒泉兄弟?怎么这么多马甲 
 
   
 
raulvim 
 
等 级:
 发表于:2007-09-24 17:56:4718楼 得分:0 
Xlapp   as   Application 
导入时要把导入的excel关闭? 

查询后如何关闭   Excel? 
Xlapp.quit 
Set   Xlapp=nothing 

? 
 
*******************************************************************************************************
怎样用DELPHI+SQL把查询到记录导成EXECL楼主kuangyulai(不务正业)2004-06-15 12:58:42 在 Delphi / 数据库相关 提问
怎样用DELPHI+SQL把查询到记录导成EXECL??? 
问题点数:0、回复次数:17
Top
 

1 楼kuangyulai(不务正业)回复于 2004-06-21 09:56:29 得分 0 怎么没人回答我呀,我是新手帮帮忙吧!   
  给我一个简单易懂的列子吧,谢谢了!!!
Top

2 楼kuangyulai(不务正业)回复于 2004-06-22 09:47:59 得分 0 怎么没人回答我呀,我是新手帮帮忙吧!   
  给我一个简单易懂的列子吧,谢谢了!!!
Top

3 楼qingfengman(清风飘逸)回复于 2004-06-22 10:17:54 得分 0 procedure   TMainForm.CustomItem7Click(Sender:   TObject);   
  Var   
      I                                                                                           :Integer;   
      ExcelApp,WorkBook                                                           :Variant;   
      d_Progress                                                                         :Double;   
  begin   
      //数据写入Excel   
      Screen.Cursor   :=   crHourGlass;   
      ProgressBar1.Position   :=   0;   
      ProgressBar1.Min   :=   0;   
      ProgressBar1.Max   :=   100;   
      with   ADOQuery1   do   
      begin   
          Close;   
          SQL.Text   :=   'Select   *   from   mrm1000';   
          Open;   
          if   RecordCount=0   then   
          begin   
              ProgressBar1.Position   :=   100;   
    
              messagedlg(#13   +   'No   record.',mtinformation,[mbok],0);   
              Screen.Cursor   :=   crDefault;   
              Exit;   
          end   
          else   
          begin   
              ExcelApp:=CreateOleObject('Excel.Application');   
              WorkBook:=ExcelApp.WorkBooks.add;   
              ExcelApp.ActiveSheet.PageSetup.Orientation   :=   xlLandscape;   //   
              ExcelApp.ActiveSheet.PageSetup.LeftMargin   :=   0.4;   
              ExcelApp.ActiveSheet.PageSetup.RightMargin   :=   0.4;//设置页边距   
              ExcelApp.Caption:='Employee';   
              ExcelApp.ActiveSheet.Columns[1].ColumnWidth:=10;   
              ExcelApp.ActiveSheet.Columns[2].ColumnWidth:=10;   
              ExcelApp.ActiveSheet.Columns[3].ColumnWidth:=10;   
              ExcelApp.ActiveSheet.Columns[4].ColumnWidth:=10;   
              ExcelApp.ActiveSheet.Rows[1].Font.Name   :=   'Times   New   Roman';   
              ExcelApp.Cells[1,3]   :=   'Employee   Report';   
              ProgressBar1.Position   :=   2;   
              //ExcelApp.range[ExcelApp.Cells[1,3],   ExcelApp.Cells[1,3]].Borders[4].Weight   :=   2;   
              //下划线修改为字体的下划线   
              ExcelApp.ActiveSheet.Rows[1].Font.Bold   :=   True;   
              ExcelApp.ActiveSheet.Rows[1].Font.UnderLine   :=   True;   
              ExcelApp.ActiveSheet.Rows[3].Font.Name   :=   'Times   New   Roman';   
              ExcelApp.Cells[3,1]   :=   'created   date   :   '   +   FormatDateTime('YYYY-MM-DD',now);   
              ProgressBar1.Position   :=   5;   
              ExcelApp.ActiveSheet.Rows[5].Font.Name   :=   'Times   New   Roman';   
              ExcelApp.range[ExcelApp.Cells[5,1],   ExcelApp.Cells[5,4]].Interior.Color   :=   clAqua;   
              ExcelApp.Cells[5,1]   :=   'Employee   Code';   
              ExcelApp.Cells[5,2]   :=   'Employee   Name';   
              ExcelApp.Cells[5,3]   :=   'Option   Pwd';   
              ExcelApp.Cells[5,4]   :=   'Office   Code';   
              I   :=   6;   
              d_Progress   :=   92/recordcount;   
          end;   
          while   not   eof   do   
          begin   
              ProgressBar1.Position   :=   round(ProgressBar1.Position   +   d_Progress);   
              ExcelApp.Cells[I,1]   :=   FieldByName('user_code').AsString;   
              ExcelApp.Cells[I,2]   :=   FieldByName('user_name').AsString;   
              ExcelApp.Cells[I,3]   :=   FieldByName('user_pwd').AsString;   
              ExcelApp.Cells[I,4]   :=   FieldByName('office_code').AsString;   
              Inc(I);   
              Next;   
          end;   
      end;   
      ProgressBar1.Position   :=   98;   
      ExcelApp.Cells[I,1]   :=   'Finished';   
      ProgressBar1.Position   :=   100;   
      Screen.Cursor   :=   crDefault;   
      ExcelApp.visible:=true;   
  end;
Top

4 楼foxe(火狐)回复于 2004-06-22 11:51:16 得分 0 Good   Sample!
Top

5 楼maxtool(≮From NingBoo≯)回复于 2004-06-23 14:25:04 得分 0 例子写得很详细!
Top

6 楼lrt119(啊杰)回复于 2004-06-23 18:47:46 得分 0 用QuantumGrid4吧   下载www.2ccc.com   
  用法:   
  引用   cxExportGrid4Link   
  导出Html     
  procedure   ExportGrid1ToHTML(const   AFileName:   string;   AGrid:   TcxGrid;   AExpand:   Boolean   =   True;   ASaveAll:   Boolean   =   True);   
    
  导出excel   
  procedure   ExportGrid1ToExcel(const   AFileName:   string;   AGrid:   TcxGrid;   AExpand:   Boolean   =   True;   ASaveAll:   Boolean   =   True;   AUseNativeFormat:   Boolean   =   False);   
    
  导出txt   
  procedure   ExportGrid1ToText(const   AFileName:   string;   AGrid:   TcxGrid;   AExpand:   Boolean   =   True;   ASaveAll:   Boolean   =   True;   const   ASeparator:   string   =   '';   const   ABeginString:   string   =   '';   const   AEndString:   string   =   '');   
  
Top

7 楼yg123aa(爱吃肉的羊)回复于 2004-06-29 16:23:14 得分 0 我来补充一点,在导入时前面可加一个'号,才不受数据类型影响
Top

8 楼zgq19801123(小强)回复于 2004-06-29 16:30:04 得分 0 procedure   speedtoexcel_user(Sinput:TwwDBGrid);   
  var   
      Ds_Master:Tdataset;   
      ExcelApplication1:TExcelApplication;   
      ExcelWorksheet1:TExcelWorksheet;   
      ExcelWorkbook1:TExcelWorkbook;   
      i,j:integer;   
      stringlist1:Tstringlist;   
      str1:string;   
      range1:string;   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -