📄 45.txt
字号:
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 + -