2016-06-17 6 views
-1

簡単な質問がありますが、変数Aと変数Bの間に時間間隔があり、そこにプロセスを追加できないことをプログラムに理解させるにはどうすればよいですか? AとBの間隔を表す変数を作成するにはどうすればよいですか?VBでの予定のプログラミング

+0

これは現在も意味がありません - [MCVE] –

+0

あなたの質問イストは本当に明確な、しかし、私は、[これはあなたを助ける]だと思います(http提供してください://を –

+0

はい、基本的に、私は2つの変数を宣言する必要がありました。これは、開始位置を指定する2つ以上の変数を宣言する必要がありました。(例:ValB - ValA) (<0:55、最大指定時間)または下限(=または> 0)が新しいプロセスの影響を受けていることを確認できる3番目の変数を宣言しました(20:00-30:00)、そのうちの1つが影響を受けていない場合は何も追加しませんが、時間がある場合は時間が競合しません)その後、予定を追加します。 –

答えて

0

あなたには2つの質問があります。 2つの値の間に間隔を作成するという第2の問題は簡単です。

Interval = B – A 

上記したがって、2つの変数の間の差をもたらすであろうし、上記3つの変数は、日付/時刻変数である場合、得られた値は、時間単位であろう。 (日付型変数は、日付+時刻の両方の値を保持できます)。

最初の質問については、基本的な衝突を探しています。

衝突が発生したとき:

RequestStartDate <= EndDate 
and 
RequestEndDate >= StartDate 

上記は、このようにかなり単純クエリですが、任意の衝突が発生した場合に、上記のレコードを返します。その時点では、テーブルへの行の予約または追加を許可しないだけです。言い換えれば、決して衝突を伴う予約を許可しないので、上記の単純な照会および論理ステートメントは私たちのために働くでしょう。上記は存在するラップを超えていることを見つけるでしょう。

上記の日付、時間、数字、またはBETTERは、あなたの質問に適切な日付/時刻の値であることを指摘しておきます。時間の衝突だけでなく、与えられた日付に基づいた衝突(時間の衝突は多くの日付にわたって発生する)を想定するのは理にかなっています。上記の値がDateコンポーネントのないTime値である場合、上記のロジックはEVENで動作します。 Accessでは、日付変数は日付+時刻の両方を保持し、時間のみの衝突を扱う場合、日付部分はゼロの値です。上記のように、あなたは与えられた日付なしの時間のみの値を扱っている可能性は低いです。

したがって、上記の単純なクエリは衝突を検出し、そのような衝突を防ぐためにコードロジックを使用することができます。上記を達成するためのサンプルVBAは、このように次のようになります。

dim strWhere      as string 
dim dtRequeestStartDate  as date 
dim dtRequestEndDate   as date 


dtRequestStartDate = inputbox("Enter start Date") 
dtRequestEndDate = inputbox("Enter end date") 


strWhere="#" & format(dtRequestStartDate,"mm/­dd/yyyy") & "# <= EndDate" & _ 
    " and #" & format(dtRequestEndDate,"mm/dd­/yyyy") & "# >= StartDate" 


if dcount("*","tableBooking",strW­here) > 0 then 
    msgbox "a collision exits, sorry, you can’t book" 
0

はい、基本的には、プロセスの開始制限と終了制限がどこで開始されたかを指定する2つの変数を宣言する必要がありました。また、上限を確認できる3番目の変数を宣言しました(< 0:55 、最大の任命時間)または下限(=または> 0)が新しいエントリ時間間隔の影響を受けていた場合、そのうちの1つが影響を受ける場合は何も追加せずに(20:00-30:00)利用可能な時間(時間は競合しません)、次に予定を追加します。

関連する問題