一个表中有四个字段,一个是自动ID,AUTO_ID,(oracle8),是一个sequence,seqid;一个是company,字符型的,一个是num,double型的,一个是日期型的dt,现在我从Excel表中读出三个值,ExcelID.cells[2,1].value(对应company),ExcelID.cells[2,2].value  ,对应num,ExcelID.cells[2,3].value,(对应dt),如何把这三个值加上自动插到存到表中,  
query1.close;    
query1.sql.clear;  
query1.sql.add('insert  into  tablename  (company,  num,  dt)  values(怎么写?)');  
query1.execsql;  

解决方案 »

  1.   

    query1.sql.add('insert  into  tablename  (company,  num,  dt)  values(''' + ExcelID.cells[2,1].value + ''',' + ExcelID.cells[2,2].value + ',to_date('''+ ExcelID.cells[2,3].value+ '''))'
      

  2.   

    大哥啊,还有一个字段,一共四个字段,上面我写错了,三个从excel表中取出,一个是序列值(自动id)。
    query1.close;    
    query1.sql.clear;  
    query1.sql.add('insert  into  tablename  (auto_id,company,  num,  dt)  values(怎么写?)');  
    query1.execsql;
      

  3.   

    那其它三个怎么写,按firetoucher(风焱)的方法,在日期上那个子段值出错。说string类型不能转换为date型的
      

  4.   

    sqlstr:=format('insert  into  tablename  (company,  num,  dt)  values ("%s","%s","%s")',[ExcelID.cells[2,1].value , ExcelID.cells[2,2].value , ExcelID.cells[2,3].value];query1.sql.add(sqlstr);
    query1.execsql;
      

  5.   

    query1.sql.add('insert  into  tablename  (company,  num,  dt)  values(:s1,:s2,:s3)');
    query1.ParamByName('s1').value:=ExcelID.cells[2,1].value;
    query1.ParamByName('s2').value:=ExcelID.cells[2,2].value;
    query1.ParamByName('s3').value:=ExcelID.cells[2,3].value;
    query1.excelsql;auto_id不要对其进行任何操作 即可!
      

  6.   

    一定要把日期型数据转换为与数据库中一致,比如数据库中是yyyy/mm/dd,一定要在插入之前转换.可以用formatdatatime().我曾经做过一个数据库二次开发,日期数据格式是dd/mmm/yyyy,中间的月份在英文系统下显示是三字母简写如:sep,jul等,在中文系统下就是九月/六月.弄的我狂郁闷.