小弟想用Delphi6将oracle的表导到access库中,
但现在表名和表结构未定,想写一个函数,
输入一个表名,然后在Access库中建一个同名的表,
将数据导出。
但问题在于两种数据库的字段属性不太一样。
比如说oracle表中可能有number(29)的字段,是用来存放ID的
转到Access中最好是用char(29)来装,
还有一些数字为number(16.2)的,也要转成access中相应的字段属性。
但通过TDdataSet的fieldtype的属性,发现上面的两种类型都是ftBCD的
无法区分。
大家有没有什么好的方法可以处理呢?

解决方案 »

  1.   

    通过Query,写一个Record或数组来保存不同类型;
      

  2.   

    解决方法:
    1、通过访问oracle的tab表可以访问到你要导出的表.(或者用户指定)
    2、通过给定指定的表访问user_tab_columns视图获得表字段信息.
       select * from user_tab_columns where lower(table_name)='yourtablename'
    3、根据2得到的数据构造ACCess的表数据结构.
      

  3.   

    to hawksoft
    那样的做法是可行的,但需要我的数据库用户有足够的权限。
    不知还有没有更好的方法?
      

  4.   

    我想有两种方法:
    1。用ADOX--可以执行所有数据库属性相关的操作,如字段属性,字段名更改,字段长度设置等,我试过从Access动态读出表的字段属性及字段名,然后在Oracle建表,然后导入。Access完全支持ADOX.
    2.把Oracle的表导出成特定的文件格式,然后再导入Access。这方面的控件很多,很方便的。
      

  5.   

    用sql语句创建access表,decimal类型的小数位如何设定?
    是这样吗?create table t ( f1 decimal(16.2)) 
    好像出错。
      

  6.   

    发现错误在哪里了,原来把','写成'.'了
    唉,项目进度急,只好用hawksoft(明月清风) 的方法了。
    贴结了,谢谢各位.