TADODataSetとTDBDataSetの違いについて

解決


JJKK  2006-11-15 19:14:51  No: 23938

昨日、「ADOTableでのデータ取得方法」で質問させて頂いたJJKKです。
ありがとうございました。

さて、昨日の続きの作業で再度質問があります。
<作業>----------------------------------
データベースの入れ替え作業
<旧環境>
BCB5  Paradox BDE
<新環境>
BCB6  SQLServer  ADO
-----------------------------------------
<旧ソース>-----------------------------
void abcd(TDBDataSet* aa);
{  処理
}
void efgh()
{  TTable *tab;
   TQuery *que;
   abcd(tab);
   abcd(que);
}
--------------------------------------
<新ソース>-----------------------------
void abcd(TADODataSet* aa);
{  処理
}
void efgh()
{  TADOTable *tab;
   TADOQuery *que;
   abcd(tab);
   abcd(que);
}
--------------------------------------
上記の記述で、旧ソースは問題なかったのですが、新ソースの方では
「'TADOTable*'型は'TADODataSet*'型に変換できない」
「パラメータ'aa'はTADODataSet*型として定義されているのでTADOTable*は渡せない」
とエラーになってしまいます。
ヘルプを見たのですが、「TDBDataSetとTTable,TQuery」「TADODataSetとTADOTable,TADOQuery」の関係の違いが分かりませんでした。
ご教授して頂けると幸いです。


HOta  2006-11-15 21:04:23  No: 23939

TTable,TQueryはTDBDataSetから派生したもので、抽象型ですが、TADODataSet,TADOTable,TADOQueryはTDataSetから派生したものです。TADODataSetとTADOTable,TADOQueryは別物です。helpで見ると、その辺の関係も判ると思います。TADODataSetで受けるなら、呼び出し側もTADODataSetにしなければいけません。受ける側をTDataSetにすればどうでしょうか?


JJKK  2006-11-15 21:24:50  No: 23940

HOta様
ありがとうございます。
受け側をTDataSet にすることで解決しました。

再度ヘルプを読み直し納得致しました。
「継承」というところは見ていませんでした。
まだまだ、理解が足りないようです。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加