FDBatchMove的使用,搞了好久,今天终于解决了自己的几个问题,网上很少例子,记录一下,仅做参考。
1、使用firedac导入excel表,需要access database驱动,不要使用2007,一定要使用2010,否则你将有很多麻烦不能解决。会提示数据类型不匹配。
2、FDBatchMove的read和write语句,text,dataset,sql三个语句可以混用,不一定必须成双成对。
3、使用FDBatchMoveSQL的Reader和writer语句时,read的语句中的字段如果和write的字段不一致,必须as成一致的字段,write语句中的字段必须和数据表的字段一致,即使使用:变量时,这个变量也必须一致,否则提示主键未定义。
4、读写语句中,你可以任意使用sql的标准函数,但须遵守上述的条件。
5、字段中如果需要日期的读入,最好使用Format+FormatDateTime读入,否则会提示数据类型不匹配。
6、有时候提示string数据类型不能转换为cerrency类型,这是Excel表中的数据类型异常导致的,把需要的列用分列做一次常规赋值(用单元格格式不起作用),什么也不要动作,直接下一步完成即可,保存后就正常了。
其他的你可以随意发挥。
举个特别的例子,excel->sql,姓名是sql表的主键,excel表中没有姓名字段,只有编号,但sql的表中有对应关系:
ReadSQL=select 分值 as 业务量,编号 as 姓名 from [A表$]
WriteSQL=update 计算表 set 业务量=:业务量 where 姓名=(select 姓名 from 计算表 where 编号=:姓名)
不用质疑,就是这么奇葩的写法,如果不这样转换,就会提示主键没有定义的错误。