现在一个简单的小作业,包括数据的录入,excel形式的导入导出。查询,删除,修改,报表打印。仅仅简单的这几项功能,结果每次编译运行起来,都特别慢。更无法忍受的是,只有4,5条记录的excel表导入,导出,都要等上几十秒钟,请问xdjm你们的程序是这样的吗?有如何优化的办法?请指点!也可能有一点是:每一种操作在不同的窗体上我都用了adoquery ,datasource,adoconnection,dbgrid 控件。如何优化一下(除了data moudule)?还有个问题就是:在本地电脑我已经设了odbc数据源。有直接的数据库访问路径。如果现在换了电脑,如何让程序由相对路径直接连接数据库,而不需要配置呢?请给点详细的代码提示!或者源码参考!

解决方案 »

  1.   

    建议你使用data moudle,虽然…“(除了data moudule)”
    你可以用Access数据库的,
    我不好做——因为我是office2003,d7不支持,每办法~
      

  2.   

    Excel我导出20万条数据仅仅需要5分钟,会很慢吗?
      

  3.   

    如果用Access数据库的话只要把Access数据库放在应用程序相同目录,然后在连接时用相对路径,这样子不管你程序放在那里,只要数据库和应用程序相同目录就不会出错。
      

  4.   

    导出直接导出成csv文件,不要用com组件,很快的。
    倒入就没有太好的主意了。smexport/smimport控件可以看看。
      

  5.   

    to   WantKindHeart(福小义) 
    我用了相对路径   它怎么说 找不到数据源呢?
      

  6.   

    我用adoconnection ,adoquery连接数据库时用的绝对路径,这样有很多局限,我想运行程序时,不局限数据库的存储位置,一直没有个比较好的方法,请教过来人!
      

  7.   

    ADOConn1.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+GetCurrentDir+'\pack.mdb;Persist Security Info=False';
      ADOConn1.Connected := true;
    在FormCreate事件里或者你要用的地方写都可以,或者用OpenDialog等指定文件路径便可
      

  8.   

    只要各用一个:ADOQuery,ADOConnection,DataSource,DBGrid,当然一个DataSource只能
    使一个数据集为当时有效,如果ADOQuery查询改变时DBGrid也会变,写的可能不太清楚