2009年10月28日

(4)プログラム変更 その2

・IBXからDBXへの置き換え

1)データベースコンポ
TIBDataBaseと同じユニットに、TSQLConnectionコンポーネント貼り付け。
TIBDataBaseの名前を変更。TSQLConnectionの名前に、もともとのTIBDataBaseの
名前を変更(特にこだわらなくてもよいが、修正の手間が若干少なくなる)

関連した部分の修正。
DBのOpen/close、トランザクション関係は、メソッド化してあるので、関連メソッドのコードを
書き換え(下記コード参照。下記以外にも、DBOpenイベントで設定情報をiniから読み込ん
でいる処理などがあるが、省略。3層スタイルC/S作成術参照
type
  TDMDataBase = class(TDataModule)
   〜〜
   DB: TSQLConnection;
   〜〜
  private
    FDBXTran : TDBXTransaction; //追加
  public
    procedure DBOpen;
    procedure DBClose;
    function IsDBOpen: boolean;
    procedure TrnStart;
    procedure TrnCommit;
    procedure TrnRollBack;
    procedure TrnCommitRetaining;
    function InTrn: boolean;
  end;
~~~~~~
procedure TDMDataBase.DBOpen;
begin
  if not IsDBOpen then    DB.Open;
end;
function TDMDataBase.IsDBOpen: boolean;
begin
  result := DB.Connected;
end;
procedure TDMDataBase.DBClose;
begin
  DB.Close;
end;
function TDMDataBase.InTrn: boolean;
begin
  // result := Trn.InTransaction;
  result := DB.InTransaction;
end;
procedure TDMDataBase.TrnCommit;
begin
  //  Trn.Commit();
  DB.CommitFreeAndNil( FDBXTran );
end;
procedure TDMDataBase.TrnCommitRetaining;
begin
  //  Trn.CommitRetaining();
end;
procedure TDMDataBase.TrnRollBack;
begin
//  Trn.RollBack();
  DB.RollbackFreeAndNil( FDBXTran );
end;
procedure TDMDataBase.TrnStart;
begin
//  Trn.StartTransaction;
  FDBXTran := DB.BeginTransaction( TDBXIsolations.ReadCommitted );
end;

2)TIBQueryからTSQLQueryへの置き換え
(今回のアプリでは、SQL文は、コンポーネントに記述しているので、
この方法をとっているアプリについての手法となる)

失敗するとDelphiで開けなくなるので、バックアップをとってから行う。
TIBQueryのある、*.dfmと*.pasファイルをテキストエディタで開く。
旧定義
   DB: TIBDataBase;
旧定義
   DB: TSQLConnection;
とする。

・dfmファイルの変更
TIBQueryの定義を変更
 object QryShopInfo: TIBQuery
    Database = DMDataBase.DB
    Transaction = DMDataBase.Trn
となっている部分を
object QryShopInfo: TSQLQuery
  SQLConnection = DMDataBase.DB
クラス定義の変更 TIBQuery=>TSQLQuery
プロパティ名変更 Database=>SQLConnection
Transactionの行は削除

と変更。
すべてファイル内すべて置き換える。

・pasファイルの変更
クラス定義の変更 TIBQuery=>TSQLQuery
 (フィールド定義を生成している場合、再生成したほうがよいと思われる(未確認))

・IDEで開くことができるか確認
すべての変更を終えたら、Delphiで開くことができるか確認する。
修正ミスがあると、フォームが開けなくなることがあるので注意が必要

・ParamsプロパティのDatatypeの設定
DBXにおいて、paramsのDataTypeは、ftUnknownが許されないので設定する。
IBXでは、許されていたので、元のソースは、すべてftUnknownのままだったので、
すべて再設定。テーブルのフィールド型との同期も必要で結構面倒です。何かよい
方法を考える必要はありかなと思います(今回の宿題です)。


補足)
IDEでなく、エディタで作業するのは、複数ファイル並べて作業ができ便利なためで、
上記作業をIDEのエディタで1ファイルずつ開いて行う方法で可能だと思う。

補足)
”2)TIBQueryからTSQLQueryへの置き換えで使用しているテクニックで、
エディタで、dfmファイルを修正していく方法は、BDEからIBXやDBXに置き換える
ケースでも使えます。
弊社で行うときは、事前にdfmファイルを変更し、その後、コンパイル・テストで、細
かい変更箇所をつぶしていく方法をとっています。
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/33248438
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック