昨日、「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」の関係の違いが分かりませんでした。
ご教授して頂けると幸いです。
TTable,TQueryはTDBDataSetから派生したもので、抽象型ですが、TADODataSet,TADOTable,TADOQueryはTDataSetから派生したものです。TADODataSetとTADOTable,TADOQueryは別物です。helpで見ると、その辺の関係も判ると思います。TADODataSetで受けるなら、呼び出し側もTADODataSetにしなければいけません。受ける側をTDataSetにすればどうでしょうか?
HOta様
ありがとうございます。
受け側をTDataSet にすることで解決しました。
再度ヘルプを読み直し納得致しました。
「継承」というところは見ていませんでした。
まだまだ、理解が足りないようです。
ツイート | ![]() |