问题主要突出在不同数据的部分函数不一样

Accsee中是iif,而SQLServer中就是 case when then else end了如何在同一源码中实现多种数据库操作共用

解决方案 »

  1.   

    自己做个基类,然后access和sql继承自基类,这样他们可以重载父类的虚方法,各自的重载中可以写入不同的sql函数
      

  2.   


    type
      TDb = class
      public
        procedure Operate1; virtual;
        procedure Operate2; virtual;
      end;  TDbAccess = class
      public
        procedure Operate1; override;
        procedure Operate2; override;
      end;  TDbSqlServer = class
      public
        procedure Operate1; override;
        procedure Operate2; override;
      end;procedure TDb.Operate1;
    beginend;procedure TDb.Operate2;
    beginend;{ TDbSqlServer }procedure TDbSqlServer.Operate1;
    begin
      inherited;end;procedure TDbSqlServer.Operate2;
    begin
      inherited;end;{ TDbAccess }procedure TDbAccess.Operate1;
    begin
      inherited;end;procedure TDbAccess.Operate2;
    begin
      inherited;end;可以在配置文件中放置一个参数,定义系统用什么数据库,根据不同的数据库创建不同的数据库操作对象var
      db:TDb
    begin
      db := TdbAccess.create;
      或者
      db := TdbSqlserver.create;
    end;
      

  3.   

    工厂模式
    接口
    抽象类
    实体类
    用接口来强制程序员对新产品的某行为进行实现(如另加XML为存储源)
      

  4.   

    使用ADO方法读写库,绕开SQL的问题。