datetimepickerのnull処理

解決


mimi  2010-01-14 09:02:18  No: 36963

datetimepickerのnull値処理に関する質問があります。datatimepickerにnullが入る場合エラー(''は日付型ではありませんというエラーです)になってしまうので、if文でエラーを発生させないようにしたいと思っています。if datatimepicker.date is not null や  if datatimepicker.data <> ''を実験してみたのですが、コンパイルエラーになります。if文でもしnull値ならという構文を書くやり方がわかるかたいらっしゃいますか?

また、データベースからクエリで持ってくるときに、sql文の中でNVL関数でnull値を判断しようとしたら、読み込みませんでした。delphi5で、null値を0や空に置き換えるやり方はありますか?


DEKO  2010-01-14 10:22:15  No: 36964

こんにちは。
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 で登録するようにするかですね。


あだち  2010-01-15 22:47:37  No: 36965

datetimepickerでは、ShowCheckboxプロパティを、Trueにすることで、Null(未設定)の判定をさせることになると思います。
ShowCheckbox=Trueにすると、日付の頭にチェックボックスが出ます。
チェックボックスをはずすと日付入力部分がEnable状態になります。

このチェックボックス状態は、プログラムからは、Checkedプロパティで見れます。


Ru  2010-01-16 00:10:27  No: 36966

以下のSQLでNULLを0に変えれますか?
DBにより対応していない可能性があります。

SELECT 
  CASE WHEN Field1 IS NULL THEN 0 ELSE Field1 END AS Hoge1

FROM 
  Table

0は日付型に変換して処理する必要があるかも?


mimi  2010-01-16 21:57:15  No: 36967

教えていただいた方法すべてで、実行することができました。
ありがとうございます。


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

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






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