我使用的是ADOQuery连接的Execl作为数据源,Execl的sheet名是2007.08
使用数据库工具对Execl进行查询,代码如下
select "'2007#08$'".修改递交日期,"'2007#08$'".修改人,
       "'2007#08$'".实际工作量,"'2007#08$'".测试结果,
       "'2007#08$'".测试发现的问题
from "'2007#08$'"查询结果返回6条记录,与Execl中的记录基本相符,可是其中的一条记录Execl中的数据为1966/1967/1968的却不能显示出来,
如果改成1966,就能正常显示,不知道是什么原因
这是一个问题
==============================================================================================
第二个问题是我把上面的SQL语句写到DELphi中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.   

    1 通过ADO连接EXCEL会有不少问题。
    ADO会读取EXCEL的前8行来确定数据列的数据类型。如果前8行都是数字,ADO会认为这一列都是数字,那么后面的“1966/1967/1968”作为数字就无法读出。
    解决方法:EXCEL表格中,所有数字前加单引号,这样ADO就会读取为文本类型。2 你试试 select * from ...看看。3 不太可能通过一条SQL语句来写。
    建议用DELPHI程序来处理。
      

  2.   

    问题1,2已经基本解决了,问题3要怎么做呢?
    使用pos函数和copy函数吗?能否写个例子?
      

  3.   

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