2016-08-24 9 views
0

動的なアクションがあり、起動する前にjavascript条件で多数のチェックを行います。データベースから読み込み専用フィールド(P4_NEXT_RENEWAL_DATE)に戻った日付が今日のシステム日付よりも遅い場合は、リージョンを表示するだけです。Oracle Apex 5の動的アクションでOracleと日付を比較できない

のMy Oracleテーブルは、日付フィールドは、読み取り専用のページ・アイテムの中に戻されました:

次の更新日:これは以下のような値を返します

P4_NEXT_RENEWAL_DATE

16-JUL-2017 

は、私は以下のように見えるダイナミックアクションを、持っている:私は私の次の場合は地域を示すだろう期待していた

(
(apex.item('P4_RENEWAL_REQUIRED').getValue()=='Yes' && apex.item('P4_RENEWAL_REQUIRED_AGREE').getValue()=='Agree') 
|| 
(apex.item('P4_RENEWAL_REQUIRED').getValue()=='No' && apex.item('P4_RENEWAL_REQUIRED_AGREE').getValue()=='Disagree') 
) 
&& 
Date.parse(apex.item('P4_NEXT_RENEWAL_DATE').getValue()) > new Date() 

それはこの最後のビット動作していないされ、

&& Date.parse(apex.item('P4_NEXT_RENEWAL_DATE').getValue()) > new Date() 

更新日は今日の日付よりも遅かったですが、日付が過去か未来かに関係なく地域を示します。

私の読み取り専用フィールドがP4_NEXT_RENEWAL_DATEの日付の文字列バージョンを返しているのか、またはApexがOracleからの日付値を知っていて、javascriptが日付値として扱っているのかわかりません。いくつかのdate.parse()メソッドを試しましたが、何も動作しないようです。

&& apex.item('P4_NEXT_RENEWAL_DATE').getValue() > new Date() 

何かアドバイス:

は私もdate.parseを使用していない、と私は戻っ生の日付オブジェクトを介していますストレートapex.item.getValue()呼び出しを使用して、ない運ないか試してみました感謝。

+0

私は 'Date.parse'で手がかりになっていませんが、P4_NEXT_RENEWAL_DATEに保持されている値は**文字列**です。 '16 -JUL-2017 'だから問題は: 'Date.parse'はその形式の文字列を扱うことができるか? –

+0

Oracleは、日付列から日付値を取り出し、string型のバインド(?)変数であるページ項目に保持するのはなぜですか? 3つのOracleサブストリングを使用して日付を3つに分割しようとしましたが、 "2017年7月16日"などの部分から文字列を作成しましたが、まだ喜んではありません – smackenzie

+0

GoogleのDate.parseおよびDD-MMM-YYYY 「解決策に関する提案」 'apex.item'はJavascript関数です(Oracleから提供されています)、それはすべて" text "型の入力であり、データベースの列を調べていないので、日付値を保持していることを知らない。 –

答えて

0

まず、私はMDN documentation for Date.parseでこれを見つけました。

文字列の解析は完全に実装に依存していましたが、ES5まではDate.parseを使用することはお勧めしません。異なるホストが日付文字列をどのように構文解析するかには依然として多くの違いがあります。したがって、日付文字列を手動で解析する必要があります(さまざまな形式があればライブラリが役立ちます)。

RFC2822またはISO 8601の日付を表す文字列です(他の形式も使用できますが、結果は予期しないことがあります)。

これはdocumentation for the Date objectからです。

注:日付の文字列をDateコンストラクタ(およびDate.parseと同等です)で解析することは、ブラウザの違いや不一致によって強く推奨されません。

私はさまざまなブラウザで少しテストしてみたとChromeは喜んでDate.parseと日付のコンストラクタのための「DD-MON-YYYY」の形式で値を処理しますが、FirefoxとIEはしないでください。

JavaScriptで日付を操作/比較する場合は、Moment.js日付ユーティリティライブラリを使用してこれらの問題を回避することをおすすめします。いずれか、PL/SQLで日付を比較する方法があります。

関連する問題