0

SQLコマンドオブジェクトを使用してデータを取得するCrystalレポート(バージョンXI r3)があります。コマンドオブジェクトには、日付のパラメーターがあります。私のデータベースは、YYYYMMDD形式の数値として格納されている「日付」フィールドを使用しているため、パラメーターを数値として指定し、「YYYYMMDD形式で日付を入力してください」というプロンプトを追加しました。

私のユーザーはそれをあまり気にしません。日付ピッカーを使用したり、MM / DD/YYYY形式で日付を入力したりできるようにしたいと考えています。

これまでの調査では、パラメーターを実際の日付データ型に変換すると、日付から数値に変換できないため、SQLコマンドオブジェクトで使用できないと考えられました。 SQLステートメントでは、SQLステートメントではなく、Crystal Select Wizardで日付範囲の制御を行う必要があります。これにより、レポートが1桁または2桁遅くなる可能性があります(テーブルにアクセスしているため)。これはこの日付フィールドによってインデックス付けされ、1日あたりのレコード数が多くなります)。

私が間違っている?ユーザーが日付をMM/DD / YYYY形式で入力し、それをSQLコマンドオブジェクトの数値YYYYMMDDパラメーターとして使用できるようにする方法はありますか?

4

1 に答える 1

2

残念ながら、元のコマンドを変更して数値パラメーターを日付パラメーターに置き換え、コマンド自体の中で日付から数値への変換を行う必要があります。

したがって、コマンド内で:

WHERE MyDate = {?MyNumberParam)

次のようになります。

WHERE MyDate = (YEAR({?MyDateParam})*10000) + (MONTH({?MyDateParam})*100) + DAY({?MyDateParam})

最後の部分では、2012 年 4 月 20 日を (2012*10000 + 4*100 + 20) = 20120420 に変換します。

于 2012-04-20T15:49:42.237 に答える