2017-02-28 9 views
-1

日付を表示する柔軟なテーブルが必要です。フレキシブルなことは、私が1976年6月15日に書いたように、それをそのまま表示するということです。しかし、私が20を置くと、Accessは今日の日付 - 20年と同じフィールドに20を計算します。必要日計算MSアクセス

table:tbl_ageLimitの日付/時刻フィールドの書式を#に設定して、ユーザーが読める日付ではなくシリアル日付を表示します。この表には、ageLimitという1つのフィールドがあります。

日付が現在の状態とは関係がないかどうかを確認し、それを関連するものに変換して、それを絶えず更新する別のテーブルに入れるクエリを開発しようとしています。

今は、日付を認識して変換するための数式を取得しようとしています。これは、Excelで見事に働く式ですが、MS Accessで動作していないようです:

IIF([ageLimit]<=100,Date()-365*[ageLimit],[ageLimit]) 

フィールドが100未満であることで数を持っている。しかし、それはやっていない場合、それが認識します新しいテーブルに新しいレコードが表示されます。以下はSQLです:

SELECT tbl_ageLimit.ageLimit INTO tbl_allAges 
FROM tbl_ageLimit 
WHERE (((tbl_ageLimit.ageLimit)=IIf([ageLimit]<=100,Date()-365*[ageLimit],[ageLimit]))); 

私が間違っていることを誰かが親切に指摘できますか?ありがとうございました。

要求されたように、ここでの問題のスナップショットです:

tbl_ageLimit Time/Date Field formatted as serial datetbl_allAges showing four records instead of five. Where's the fifth record?

作成されたテーブルには5番目のレコードが表示されません。困った。

+0

その式はExcelで見事に動作しない方法:あなたがSELECT句でIIF()表現、場所を評価するつもり以来? Excelは 'IIF()'を使用しません。 *しかし、それは数学をやっていない* ...私たちに現在と希望の結果のいくつかのデータを示してください。 – Parfait

+0

私のデザインに欠陥があると言っても大丈夫です。その目的は、州ごとに特定の物件の貸出に関する法律が異なるためです。残念なことに、ある人は20歳と言い、他の人は1976年6月15日のように確定しています。 –

+0

ExcelにはIIf()式があります。これはIF(式の場合は真、偽の場合)です。 –

答えて

1

レコードをフィルタリングする必要がないので、WHERE句を削除することを検討してください。

SELECT IIf([ageLimit]<=100, Date()-365*[ageLimit], [ageLimit]) As [age_Limit] 
INTO tbl_allAges 
FROM tbl_ageLimit 
+0

それは私に循環参照ダイアログボックスを与えています。多分アクセス制限ですか? –

+0

テーブルエイリアスの名前を変更します。 [age_Limit]の更新を参照してください。次に、新しいテーブルに名前を戻します。 – Parfait

+0

あなたは美しい人です!ありがとうございました! –