ホーム   フォーラム   FAQ
 
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

Re: Dstrの"YYYY年MM年DD日Z"について

このトピックの投稿一覧へ

なし Re: Dstrの"YYYY年MM年DD日Z"について

msg# 1.1
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2011-11-24 19:02
Jiro123  長老   投稿数: 271
日付が空白というのは、'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にすれば、関数の置換の作業は不要になるのですが、実際に試してみると、既存の関数名と同じ名前だと、実行時に落ちてしまったので、ひょっとすると、名前がかぶるといけないのかもしれませんね。

ご参考まで。。。

投票数:1 平均点:10.00

投稿ツリー

  条件検索へ


Copyright (C) Magic Software Japan K.K. All Rights Reserved.
個人情報保護方針 会員規約