Re: Dstrの"YYYY年MM年DD日Z"について
Jiro123
投稿数: 271
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
日付が空白というのは、'0000/00/00'のことを指していると推察しました。
現行バージョンでは、日付型のデフォルト値は'1901/01/01'となっており、空白にすると、この日付になると思われます。
日付型のデフォルト値を'0000/00/00'にしているならば、空白にすると'0000/00/00'になります。
Dstr関数の第二パラメータは文字型になるので、「"」の箇所は「'」が適切と思います。
それで、対処法を考えてみました。
ユーザ定義関数を利用して、日付が'0000/00/00'の場合のみ、14桁の半角スペースを返すような関数を自作するというのはどうでしょう。
メインプログラムのロジックにて、関数ロジックユニットを定義します。
名前は最小限の変更で済むように、例えば「guDstr」とでもしましょうか。(「gu」はグローバルユーザ定義関数の略称とした接頭辞です)
Dstr関数に倣って、パラメータ項目を2つ定義します。第一パラメータは日付型項目、第二パラメータは文字型あるいはUnicode型で、プロジェクトで使用している日付型書式の最長を目安にサイズ(書式)を指定します。
関数の戻り値欄では、次のような式を記述します。
If(<第一パラメータの項目のシンボル><>'0000/00/00'DATE,Dstr(<第一パラメータの項目のシンボル>,<第二パラメータの項目のシンボル>,Fill(' ',14))
まず、新規のプロジェクトを作成して、上記のユーザ定義関数の動作を確認します。
メインプログラムに設定したユーザ定義関数は、グローバルユーザ定義関数となり、プロジェクト内のプログラム(タスク)のどこでも使用可能となります。
(スコープをG=グローバルにして、ユニークな公開名を設定して、他のプロジェクトにてコンポーネントとして登録すれば、他のプロジェクトでも利用することができます)
動作確認できたら、実際のプロジェクトにて、ユーザ定義関数を設定します。(先のテスト用に新規に作成したプロジェクトをコンポーネントとして利用するようにしても良いです。その際は、もちろんスコープはG=グローバルにしておくことを忘れないように)
Dstr関数を、guDstr関数に文字列置換します。
これは、Studioの編集 > 検索と置換 > テキスト置換 で置換することができます。
ユーザ定義関数の名前を、Dstrにすれば、関数の置換の作業は不要になるのですが、実際に試してみると、既存の関数名と同じ名前だと、実行時に落ちてしまったので、ひょっとすると、名前がかぶるといけないのかもしれませんね。
ご参考まで。。。
現行バージョンでは、日付型のデフォルト値は'1901/01/01'となっており、空白にすると、この日付になると思われます。
日付型のデフォルト値を'0000/00/00'にしているならば、空白にすると'0000/00/00'になります。
Dstr関数の第二パラメータは文字型になるので、「"」の箇所は「'」が適切と思います。
それで、対処法を考えてみました。
ユーザ定義関数を利用して、日付が'0000/00/00'の場合のみ、14桁の半角スペースを返すような関数を自作するというのはどうでしょう。
メインプログラムのロジックにて、関数ロジックユニットを定義します。
名前は最小限の変更で済むように、例えば「guDstr」とでもしましょうか。(「gu」はグローバルユーザ定義関数の略称とした接頭辞です)
Dstr関数に倣って、パラメータ項目を2つ定義します。第一パラメータは日付型項目、第二パラメータは文字型あるいはUnicode型で、プロジェクトで使用している日付型書式の最長を目安にサイズ(書式)を指定します。
関数の戻り値欄では、次のような式を記述します。
If(<第一パラメータの項目のシンボル><>'0000/00/00'DATE,Dstr(<第一パラメータの項目のシンボル>,<第二パラメータの項目のシンボル>,Fill(' ',14))
まず、新規のプロジェクトを作成して、上記のユーザ定義関数の動作を確認します。
メインプログラムに設定したユーザ定義関数は、グローバルユーザ定義関数となり、プロジェクト内のプログラム(タスク)のどこでも使用可能となります。
(スコープをG=グローバルにして、ユニークな公開名を設定して、他のプロジェクトにてコンポーネントとして登録すれば、他のプロジェクトでも利用することができます)
動作確認できたら、実際のプロジェクトにて、ユーザ定義関数を設定します。(先のテスト用に新規に作成したプロジェクトをコンポーネントとして利用するようにしても良いです。その際は、もちろんスコープはG=グローバルにしておくことを忘れないように)
Dstr関数を、guDstr関数に文字列置換します。
これは、Studioの編集 > 検索と置換 > テキスト置換 で置換することができます。
ユーザ定義関数の名前を、Dstrにすれば、関数の置換の作業は不要になるのですが、実際に試してみると、既存の関数名と同じ名前だと、実行時に落ちてしまったので、ひょっとすると、名前がかぶるといけないのかもしれませんね。
ご参考まで。。。
投票数:1
平均点:10.00
投稿ツリー
-
Dstrの"YYYY年MM年DD日Z"について (MTA, 2011-11-22 18:02)
-
Re: Dstrの"YYYY年MM年DD日Z"について (Jiro123, 2011-11-24 19:02)
-
Re: Dstrの"YYYY年MM年DD日Z"について (MTA, 2011-11-24 22:49)
-