C#でBDE(Delphi)のデータをMDBに移行しようと思うのですが、
BOOL型の値がNULLのとき、TRUEでセットされてしまいます。
(MDBではYesNo型)
ODBC接続でSQL(SELECT 〜 FROM ...)を投げて、返ってきた
BOOL型の値がNULLのときTRUEになります。これをFALSEでセットしたいのですが、良い方法はありますでしょうか?
SELECT文でISNULL関数を使用し、NULLならFALSEをセットしようと思ったのですが無理でした。
すみませんが、よろしくお願いします。
いろいろ方法はあります。
プログラムで判断する。
if DataSet1.FieldByName('論理型').isNull then
DataSet2.FieldByName('YesNo型').AsBoolean := false
else
DataSet2.FieldByName('YesNo型').AsBoolean :=
DataSet1.FieldByName('論理型').AsBoolean;
TQueryの計算項目で、同様な変換を行う。
等ですかね。
HOta様
ご返事ありがとうございます。
データ取得時NULLが入っていれば
いろいろと方法はあると思うのですが、
BDEデータをSQLで取得時、DataTableには
どうもNULLではなくTRUEが入ってるようなんです。
C#でFALSE(値=0)ではない場合はTRUE(値=-1)とみなされているのでは?
と考えています。
方法が悪いのかわかりませんが、どうしたらよいか分かりかねております。
また何かご存知のことがあれば教えてください。
よろしくお願いします。
環境は何でしょうか?
当方で、D7+BDEで適当なテーブルを作り、Queryで選択したところ、
FieldByName('論理型').isNullでNULLのチェックはできています。
HOta様
データを確認したところMDBにほうにはFalseがセットされていました。
BDEのデータをSELECT文でISNULL関数が使えなかったので
NULLが入っていないと思っていましたが、
どうやらそのまま入っていたようです。
問題なかったということで大変お騒がせしました。
HOta様調べていただきありがとうございました。
ツイート | ![]() |