200﹀セ―秆??虏虫?拜肈!!!!!!!!!!!!!!!!!!????????(200分)

  • 主题发起人 主题发起人 luyear
  • 开始时间 开始时间
L

luyear

Unregistered / Unconfirmed
GUEST, unregistred user!

璶暗????戈?锣郎祘?
盢呼??更?Excel??
锣?セ??Oracle柑??
ノADODateSet弄?Excel??
ρ琌?瞷
"礚猭醚??戈?畐!"单岿粇
叫拜??ODBC㎝ADODateSetだ?璶??砞竚?
?セDELPHI5? EXCEL刚筁?贺?Α?常ぃ︽
 
我来翻译乱码:

要做一个一个资料转文件程序
将网上下载的Excel表格
转到本地的Oracle里面去
用ADODateSet读取Excel表格
老是出现
"无法识别的数据库!"等错误
请问如何ODBC和ADODateSet分别要如何设置?
版本DELPHI5, EXCEL试过多种格式,都不行
 
呵呵,不知道luyear是用什么输入法,以前给我发的OICQ信息也是乱码!
 
先jet4,然后
把ADOConection连接框第四页的Extended Properties属性设为
Excel 8.0。
据说如此,我不用excel,你试下先
 
出現一個數據庫 TT$
但是用command Editor 生成SQL:
select * from TT$
激活時候提示:From 子句中的語法錯誤

如何是好!!!!!

我用的輸入法是萬能五筆
 
现在连上数据库勒吧?
sql 语句错误,你改一下TT$的名字试下
 
終於成功了!!!不過用
Excel 8.0 only read Excel 97
how to use Excel 2000
 
luyear兄,
试验成功请说明是如何作的,这样将来离线中就有相关问题的详细说明了:)
后来是不是改tt$的名字了?
Excel8.0只能读excel97,你写一个excel9.0试下:)
 
东方快车好像就能翻译过来。
 
问题解决了!不过现在还不可以分分,西西

千中元至少可以得50~100分

飞龙在天,帮我翻译,可以得20~30分

我得解决方案:

用ADOTable控件打开Excel 文件
1)设置属性ConnetionString
选择 Microsoft Jet 4.0 OLE DB provider
Select or enter a datasorce name -> 选择你要打开Excel文件
User name默认是Admin 密码默认为空,可以不用理会
Extended properties 设为:Excel 8.0 (Excel 2000 好象不可以写成Excel 9.0)就可以读取Excel 97以下得版本的Excel文件

2)属性TableDirect 设为True (否则会出现“FROM 子句的语法错误。”的错误提示 )
3)这时可以从Table属性里面选择table了,所有的文件都是加了$符号的,程序中动态显示的话
可以参考我这个例子:
procedure TForm1.Button1Click(Sender: TObject);
var ProviderStr:string;
Str1,Str2,Str3:String;
SQLstr:string;
i:integer;
begin
ADOTable.Active:=False;
ProviderStr:=ADOTable.ConnectionString;
Str3:=StrPos(PChar(ProviderStr), PChar(';Mode=ReadWrite|Share Deny None;Extended Properties=Excel 8.0'));
Str1:='Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=admin;';
Str2:='Data Source='+FileList1.FileName;
ADOTable.ConnectionString:=Str1+str2+str3;

for i:=Length(FileList.FileName) downto 1 do
if Copy(FileList.FileName,i,1)='/' then
break;
SQLStr:=Copy(FileList.FileName,i+1,Length(FileList.FileName)-i-4);
SQLStr:=SQLStr+'$';
ADOTable.TableName:= SQLStr;
// SHOWMESSAGE(ADOTable.ConnectionString);
// Showmessage(SQLStr);
try
QdbfOrd.Active:=True;
except
{Error message};
end;

end;

如果用ADOQuery和ADODataSet的话,我就不知到如何设置,老是出现“FROM 子句的语法错误。”的错误提示
 
把哪个excel文件发过来看看(不想自己建立了)
还没用excel作过程序呢。呵呵
ourdelphi@163.net
 
就一个普通的excel文件而已,在公司里面,下星期发给你
 
补充:
链接Excel 2000 的时候Extended Properties=Excel 8.0是正确的。
在MSDN中说明:
Excel 97 对应 ‘Excel 97’
Excel 2000 对应 ‘Excel 8.0’
我试过2000的可以相连。

 
在ADOQuery中 select * From [Sheet1$]就可以将对应的表的内容读出
记住一定要在表名两边加[]在表名后面加$,不然就报FROM 子句的语法错误
在ADOTable中选择表名时也应手工将这两个符号加上
 
这样做好像还是有问题,会丢失数据?
例如 f1列数据如下
1001
1002
1003
b001
b002
b003
10_1
10_2
10_3
用以上办法后面六行好像都无法得到的 大家试试看(上面的列类型是文本)
其实 用Excel 的 save as 为dbf等数据文件的时候 也有这个问题
应该是认为类型不匹配,谁还有好的办法呢
 
后退
顶部