dt5 <<どこで(:LOGIN_DATE> = informat(startDT2、"mm / dd / yyyy"))を選択します。動作しません私はカレンダーの日付ボックスを使ってテーブルから行を選択するための日付範囲を得るというスクリプトを持っています。 動作しないスクリプトが1つあります。
日付を可変のstartDT2に格納しています。 フォーマットは、テーブルを分割した後のテーブルの内容と一致します。 以下はそのコードです。
TempstartDT = start << get; // This gets the date from the Calendar/Date Box.
CharDate3= Uppercase(Format(TempstartDT, "mm/dd/yyyy"));
startDT2 = CharDate3;
dt5 << Select where (:LOGIN_DATE >= informat(startDT2,"mm/dd/yyyy"));
デバッガでコードを実行すると、その日付を選択したときにstartDT2が01/29/2019であることがわかります。 LOGIN_DATe列に01/29/2019がある行がデータにあります。 選択場所を無視し、すべてのデータを取り込むことになります。
なぜSelect Whereが機能しないのか、誰にもわかりませんか?
Re:dt5 <<ここで、(:LOGIN_DATE> = informat(startDT2、"mm / dd / yyyy"));を選択します。nをするご協力ありがとうございました。 最初にデータをサブセット化し、次に選択した場所を選択する必要がありました。
Re:dt5 <<ここで、(:LOGIN_DATE> = informat(startDT2、"mm / dd / yyyy"));を選択します。nをするInformat()は何を返しますか?
Re:dt5 <<ここで、(:LOGIN_DATE> = informat(startDT2、"mm / dd / yyyy"));を選択します。nをするこのコードは機能します。 12/19/2018より前の日付を入力したところ、両方の行が強調表示されました。
dt5 = New Table( "Test", Add Rows( 2 ),
New Column( "PRODUCT_CODE", Character( 6 ), "Nominal",
Set Values( {"11111", "222"} ), Set Display Width( 103 )
),
New Column( "LOT_NUMBER", Character, "Nominal",
Set Values( {"11111-01", "222-01"} ), Set Display Width( 88 )
),
New Column( "LOGIN_DATE", Numeric, "Continuous",
Format( "m/d/y", 12 ), Input Format( "m/d/y" ),
Set Values( [3628022400, 3631564800] ),
Set Display Width( 82 )
),
New Column( "Value", Numeric, "Nominal", Format( "Best", 12 ),
Set Values( [0.0028, 0.001] ), Set Display Width( 91 )
)
);
nw = new window("test", modal(),
start = number edit box(),
start << Set Format( Format( "m/d/y", 12 ) );
);
TempstartDT = start << get; // This gets the date from the Calendar/Date Box.
dt5 << Select where( :LOGIN_DATE >= tempstartdt);
何が行われているのかを確認するために、show()ステートメントをコードに追加することもできますか。
Re:dt5 <<ここで、(:LOGIN_DATE> = informat(startDT2、"mm / dd / yyyy"));を選択します。nをするPRODUCT_CODE LOT_NUMBER LOGIN_DATE VALUE_1
11111 12345-01 12/19/2018 0.0028
添付ファイルを参照してください。
Re:dt5 <<ここで、(:LOGIN_DATE> = informat(startDT2、"mm / dd / yyyy"));を選択します。nをするすべての日付は秒単位ですが、表示方法を選択できます(例:m / d / y)。 あなたはあなたのデータの小さなサンプルを投稿することができますか?
Re:dt5 <<ここで、(:LOGIN_DATE> = informat(startDT2、"mm / dd / yyyy"));を選択します。nをするTempstartDTは秒単位です。CharDate3はそれをmm / dd / yyyyに変換します。LOGIN_DATE列は、m / d / yの形式の数値です。上記の提案は機能しません。Re:dt5 <<ここで、(:LOGIN_DATE> = informat(startDT2、"mm / dd / yyyy"));を選択します。nをするLOGIN_DATE列の形式は何ですか?数値の場合(つまり日付)、文字に変換してから数値の日付に戻す必要はありません。
TempstartDT = start << get; // This gets the date from the Calendar/Date Box.
dt5 << Select where( :LOGIN_DATE >= tempstartdt);
Re:dt5 <<ここで、(:LOGIN_DATE> = informat(startDT2、"mm / dd / yyyy"));を選択します。nをするカレンダーの日付ボックスには、1904年1月1日午前0時からの経過秒数を表す数値が取り込まれます。
あなたが作りたい比較はフォーマット関数によって生成されるような文字列を使うべきではありません。