读书人

Execl作为数据源查询语句如何写?以及相

发布时间: 2012-03-04 11:13:33 作者: rapoo

Execl作为数据源查询语句怎么写?以及相关的2个问题,100分求解答,都比较简单的问题,小弟新手各位帮帮忙
我使用的是ADOQuery连接的Execl作为数据源,Execl的sheet名是2007.08
使用数据库工具对Execl进行查询,代码如下

SQL code
select "'2007#08$'".修改递交日期,"'2007#08$'".修改人,       "'2007#08$'".实际工作量,"'2007#08$'".测试结果,       "'2007#08$'".测试发现的问题from "'2007#08$'"


查询结果返回6条记录,与Execl中的记录基本相符,可是其中的一条记录Execl中的数据为1966/1967/1968的却不能显示出来,
如果改成1966,就能正常显示,不知道是什么原因
这是一个问题
==============================================================================================
第二个问题是我把上面的SQL语句写到DELphi中
Delphi(Pascal) code
Adoquery2.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Data Source=EX';  Adoquery2.SQL.Add('select "''2007#08$''".修改递交日期,'  +'"''2007#08$''".修改人,'  +'"''2007#08$''".实际工作量,'  +'"''2007#08$''".测试结果,'  +'"''2007#08$''".测试发现的问题 '  +'from "''2007#08$''"');  Adoquery2.Open;  with   adoquery1   do  begin  close;  SQL.Clear;

编译没有错误,可是查询出来的结果完全是乱起八糟,不知道是什么原因.应该只有返回6条记录可是返回了21条,有的是重复的,有的被打乱了.
================================================================================================
第三个问题是要解决前2个才能做的.将前面查询到的数据导入到SQL数据库的表中以后,根据第一个问题中提到的比如1966/1967/1968这项对数据库的另外一张表进行查询,1966/1967/1968就是要对编号为1966,1967,1968三条记录分别进行查询,如果另外一张表的对应编号的3条记录的某一项都符合条件,就算通过,如果有其中1个记录不符合条件,就算不通过,请问SQL语句改怎么写?
主要是3个编号连在一起的,用'/'分开,不知道怎么分别去查其他表中的这3条记录.
================================================================================================
三个问题解决一个给30分,留到最后的给40分,各位帮帮忙吧,烦了我1个多星期了


[解决办法]
1 通过ADO连接EXCEL会有不少问题。
ADO会读取EXCEL的前8行来确定数据列的数据类型。

如果前8行都是数字,ADO会认为这一列都是数字,那么后面的“1966/1967/1968”作为数字就无法读出。
解决方法:EXCEL表格中,所有数字前加单引号,这样ADO就会读取为文本类型。

2 你试试 select * from ...看看。

3 不太可能通过一条SQL语句来写。
建议用DELPHI程序来处理。
[解决办法]
up
[解决办法]
1楼说的有道理

可以倒进别的数据库再做处理
[解决办法]
pos:
pos('b','abcd');
返回结果是2

copy:
例如
copy('abc',2,1);
返回结果是b

读书人网 >.NET

热点推荐