2017-03-01 8 views
0

私はLotus Notesデータベースを持っています。フォームには "ServiceDate"というフィールドと "ReadOrEdit"というフィールドがあります。それを定義する2つの日付間の月数を6か月間または6か月間で計算します。

私は適切に日付を格納する

@Date(@ThisValue) 

を使用して、日付に格納する必要がある「ServiceDate」フィールド。 ServiceDateは、6ヶ月以内であれば

はここで、ReadOrEditフィールドはServiceDateが6ヶ月を超えている場合、ReadOrEditフィールドは「読み取り専用」と表示され、「編集可能」と表示されますシナリオ

です。その瞬間、ユーザーは正確な6ヶ月をまだ定義していないので、6ヶ月間におよそ186(31 * 6)日かかると仮定します。私は、ユーザーにこのアプローチを提案すると「ReadOrEdit」フィールドに

が、私は次のコード

SixMonths := 186; 
date := @Now; 
calculation := (@Date(date)[email protected](ServiceDate))/((60*60*24) + 1); 
result := @If(calculation > SixMonths;"ReadOnly";"Editable"); 
@If(@IsError(result);"no result";result) 

を入れて、ユーザーが自分のアプローチを拒否します。ユーザーは、6ヵ月と6ヵ月を定義する日数を月ごとに定義すべきではないと考えています。たとえば、今日は2010年1月3日です。 2011年1月9日から2011年1月3日までの日付の場合、ReadOrEditフィールドは「編集可能」と表示されます。日付が01/09/2016より前である場合、ReadOrEditフィールドには「ReadOnly」が表示されます。

このwebsiteは、ReadOrEditフィールドで@Adjustを使用するよう促します。次のコードを使用して、@Adjustを使用してServiceDateの6か月前の日付を見つけようとします。私はプログラムを実行すると、入力ServiceDateが2017年1月3日である場合

sixMonths :[email protected](@Adjust(ServiceDate;0;-6;0;0;0;0)); 
@If(@IsError(sixMonths);"no result";sixMonths) 

、ReadOrEditフィールドは、2016年1月9日を表示します。結果はユーザーの要求と同じですので、プログラムで@Adjustを使用する必要があります。私が考える必要があるのは、今日とServiceDateの間に何ヶ月を計算するかです。

私はインターネット上で捜しています。コードは私の提案するコードと似ているかもしれないと思うので、ユーザーの要求を満たすためにコードを修正し始めます。

は、ここで私がプログラムを実行すると、私は結果が正しくないと気づくコード

today :[email protected]; 
sixMonths :[email protected](@Adjust(ServiceDate;0;-6;0;0;0;0)); 
sixMonthDays := @Abs(@Integer((@Date(Today) - @Date(ServiceDate)))); 
calculation:=(@Date(today)[email protected](sixMonths)); 
result := @If(calculation > sixMonthDays;"ReadOnly";"Editable"); 
@If(@IsError(result);"no result";result) 

です。

ここに私のattemtpsがあり、その結果は、日付が6ヶ月以内であるか、または日付が6ヶ月以上であっても、 "ReadOnly"のみを表示する。

入力ServiceDateが2017年1月3日である場合、それは「読み取り専用」

を示す入力ServiceDateが28/02/2017である場合、入力ServiceDateが01である場合、それは「読み取り専用」

を示します/ 09/2016には、「読み取り専用」を示す

入力ServiceDateが2016年2月9日である場合、入力ServiceDateが2016年2月8日である場合、それは「読み取り専用」

を示し、それは「読み取り専用」を示します

私は

result := @If(calculation < sixMonthDays;"ReadOnly";"Editable"); 

にコード

result := @If(calculation > sixMonthDays;"ReadOnly";"Editable"); 

を変更した場合、結果はまだ正しくありません。

ここに私のattemtpsがあり、その結果は、日付が6ヶ月以内であるか、または日付が6ヶ月以上であっても、「編集可能」と表示されます。

入力ServiceDateが2017年1月3日である場合、それは「編集可能」を示す

入力ServiceDateが28/02/2017である場合、入力ServiceDateが01である場合、それは

を「編集可能」を示します/ 09/2016には、「編集可能」を示す

入力ServiceDateが2016年2月9日である場合、入力ServiceDateが2016年2月8日である場合、それは

を「編集可能」を示し、それは「編集可能」を示します

入力ServiceDateが28/02/2017の場合は

は実際に私が入力ServiceDateが2017年1月3日である場合には、最終的な結果は、この

ようにすべきだと思い、「ReadOrEdit」フィールド」には、「編集可能」

を示しReadOrEdit 『フィールドが示す『入力ServiceDateが2016年2月9日、場合

』ReadOrEdit編集可能」フィールドが示す『』入力ServiceDateが2016年1月9日である場合

を、『ReadOrEdit編集可能』のフィールドが示します』 "Read Only"

彼が入力したServiceDateは02/08/2016です。 "ReadOrEdit"フィールドに "ReadOnly"と表示されます

私はコードを改訂しましたが、コードに間違いがあると思います。私はこれを読むpostしかし、私は考えを得ることはありません。

誰かが私の間違いを知らせてくれたり、編集可能かReadOnlyかを設定できるように、2つの日付(今日とServiceDate)の間の何ヶ月を計算するかを教えてくれてありがとう。どうもありがとうございました。

答えて

2

私があなたを理解していれば、サービスの日付から6ヶ月間編集可能なものはありますか?

あなたは日付を直接比較することができます。

@If(@Adjust(ServiceDate; 0; 6; 0; 0; 0; 0) >= @Today; "Editable"; "ReadOnly")

これはServiceDateは、日付/時刻値であることを前提としています。

ServiceDateが6か月前またはそれ以前の場合は「編集可能」、それ以外の場合は6か月以上前に「ReadOnly」を返します。 @Todayは時刻なしの日付のみの値以外は@Nowと似ています。

+0

私はあなたの答えを受ける前に、私はまだ間違いがあると考えています。あなたの答えは明確で有用です。どうもありがとうございました。 – beginner

関連する問題