2016-07-12 12 views
1

私の仕事ではこの問題を解決するために取り組んでいます。私はExcelでNetworkDaysと同様の機能を作成しようとしています。これは、休日を除く2つの日の間の営業日を返します。これは、私が再入力し、それを動作させるために微調整しようとしたコードサンプルです。変数dateIncは、増分するvarです。それは私が試してstartDate番号と等しい値を設定しようとするとオーバーフローするようです。この開始日は、開始日から終了日までのdateInc数をカウントします。私はこれが素人の間違いか、私が学ぶ必要がある本当の問題かどうかだけは分かりません。私は、エラー処理を追加してエラーをスキップして再開しようとしましたが、それはまさにそのすべてです。私はすべての建設的な批判に開放されており、コーディングの実践と解決策についてのアドバイスは大歓迎です。MSアクセス変数の宣言/オーバーフローの問題

注:私は時々起こる不均一な日付値に対応しようとしました。これは何も変わらず、私のデータは日付の値に時間がないことが起こりました。

Function Workdays(ByRef startDate As Date, ByRef endDate As Date) As Integer 
    Dim countDays&, dateInc#, startLong#, endLong#, strSQL$ 
    Dim rs As Recordset 
    Dim db As Database 
    'intialize variables to avoid overflow|Note dates are converted to a double 
    countDays = 0 
    dateInc = 0 
    startLong = CDbl(startDate) 
    endLong = CDbl(endDate) 
    'SQL select statement 
    strSQL = "Select holDate from Holidays" 
    'Open database using SQL 
    Set db = CurrentDb 
    Set rs = db.OpenRecordset(strSQL) 

    'set the date comparison to the start date's number format 
    dateInc = startLong 
    Do Until dateInc = endLong 

     Select Case Weekday(CDate(dateInc)) 
      Case vbSaturday 
      'Nothing happens 
      Case vbSunday 
      'Nothing happens 

      Case Else 
       rs.FindFirst ("holDate = # " & Format(CDate(dateInc), "mm/dd/yyyy") & "#") 
       If rs.NoMatch = True Then 
        countDays = countDays + 1 
        End If 
     End Select 
     dateInc = dateInc + 1 
    Loop 
    Set rs = Nothing 
    Set db = Nothing 
    dateInc = 0 
    Workdays = countDays 
    End Function 
+0

最初に変数をDoubleとして宣言してみましたか? –

+0

@Benno Grimmはい私は長いとダブルを試みました。それは何の違いもありませんでした。 dateIncの数値は常に増分されるか、何らかの形で最大値に設定されるようです。 – Stephen09

+0

なぜこれが起こっているのか本当にわかりませんが、オーバーフローが発生する行がわかっている場合、ユーザーMsgBoxesは変数(すべて)と現在のデータ型(https://msdn.microsoft.com/)の値をチェックします。 en-gb/library/s4zz68xc.aspx)..トラブルシューティングはここで助けになるでしょう –

答えて

0

私は自宅でこれを試して、それは完璧に働いた....... Idk私が間違って何をした。