datetimepickerのnull値処理に関する質問があります。datatimepickerにnullが入る場合エラー(''は日付型ではありませんというエラーです)になってしまうので、if文でエラーを発生させないようにしたいと思っています。if datatimepicker.date is not null や if datatimepicker.data <> ''を実験してみたのですが、コンパイルエラーになります。if文でもしnull値ならという構文を書くやり方がわかるかたいらっしゃいますか?
また、データベースからクエリで持ってくるときに、sql文の中でNVL関数でnull値を判断しようとしたら、読み込みませんでした。delphi5で、null値を0や空に置き換えるやり方はありますか?
こんにちは。
SQL で NULL 項目かどうかは、
FieldByName('ほにゃらら').IsNull
で判定できます。
https://www.petitmonte.com/bbs/answers?question_id=6738
この件と関連するのだと思われますが、
begin
if Query1.FieldByName('ほにゃらら').IsNull then
dDate := -1
else
dDate := Query1.FieldByName('ほにゃらら').asDateTime;
SetDate(dDate);
end;
こんな感じで処理するしかないと思います。
もしくは、空の日付を最初から -1 で登録するようにするかですね。
datetimepickerでは、ShowCheckboxプロパティを、Trueにすることで、Null(未設定)の判定をさせることになると思います。
ShowCheckbox=Trueにすると、日付の頭にチェックボックスが出ます。
チェックボックスをはずすと日付入力部分がEnable状態になります。
このチェックボックス状態は、プログラムからは、Checkedプロパティで見れます。
以下のSQLでNULLを0に変えれますか?
DBにより対応していない可能性があります。
SELECT
CASE WHEN Field1 IS NULL THEN 0 ELSE Field1 END AS Hoge1
FROM
Table
0は日付型に変換して処理する必要があるかも?
教えていただいた方法すべてで、実行することができました。
ありがとうございます。
ツイート | ![]() |