2016-03-30 24 views
2

こんにちは私はこれを修正する方法をたくさん検索しましたが、何も私のために働いているようだ私は何かをやっていると思う間違っている最初に発行してください。私が間に入るだろうDataGridViewの中のすべての行をカウントしようとしている。このコードでは解決方法:文字列が有効なDateTimeエラーとして認識されませんでした

Dim startDate = DateTime.ParseExact(DateTimePicker1.Text.ToString(), "dd/MM/yyyy HH:mm", DateTimeFormatInfo.InvariantInfo) 
    Dim endDate = DateTime.ParseExact(DateTimePicker2.Text.ToString(), "dd/MM/yyyy HH:mm", DateTimeFormatInfo.InvariantInfo) 
    Dim count As Integer 


    For d As Integer = 0 To ServiceDataGridView.Rows.Count - 1 
     If ServiceDataGridView.Rows(d).Cells(2).Value >= startDate & endDate <= ServiceDataGridView.Rows(d).Cells(2).Value Then 
      count = count + 1 
      MessageBox.Show(count) 
     End If 
    Next 

:私は、ここに提案するが、それでもこのエラーは常にここに出てきた私のサンプル・コードでスレッドのすべてのようなParseExactメソッドを取引します2つのDateTimePickerから選択された開始日と終了日。私はこれが動作するかわからないが、私はそれが働いているかどうかを検証することができますので、1番目のエラーを修正する必要があります。私のDataGridViewの日付形式はこれです:30/03/2016 15:51ちょうどあなたに知らせてください。前もって感謝します! :)

答えて

0

あなたはそれを使用するDateTimePicker.TextDateTimeにそれParse、その後Stringにして書式を設定する必要はありません。単にDateTimePicker.Valueを使用します。

Wednesday, March 30, 2016 'Long 
3/30/2016 'Short 

をそしてこうしてあなたのフォーマット"dd/MM/yyyy HH:mm"と一致しないので、あなたにエラーを与える:

Dim startDate As DateTime = DateTimePicker1.Value 'This is already a DateTime 
Dim endDate As DateTime = DateTimePicker2.Value 
Dim count As Integer 

For d As Integer = 0 To ServiceDataGridView.Rows.Count - 1 
    If ServiceDataGridView.Rows(d).Cells(2).Value >= startDate & endDate <= ServiceDataGridView.Rows(d).Cells(2).Value Then 
     count = count + 1 
     MessageBox.Show(count) 
    End If 
Next 

DateTimePicker.FormatあなたDateTimePicker.Textがvarily見えるかもしれ方法に応じて、言いました。

+0

こんにちは、ありがとうございます。今はすべて動作していますが、私はこのheheheを解決した後、私が予測した別の問題があります。そして、それはDataGridViewから2つのDateTimePickerの間に入る行を数えていますが、とにかくありがとうございます。これは別の問題だから別のスレッドを開きます! :) – Argal

+0

これは質問に答えるが、希望の結果が得られなくなるまでです。これはOption Strict Onでコンパイルされません –

1

は、あなたのDataTimePicker1が実際にDateTimePicker制御であると仮定すると、あなただけのValueプロパティを使用することができます。

Dim startDate = DateTimePicker1.Value 

バック現在までの文字列への変換とは、ここでは必要ありません。 [あなたのコードが失敗した理由は、.ToStringが指定した正確な形式で日付を生成しないという事実とおそらく関係している]

これを変数に保持する必要はありませんあなたのコードは非常に多くを簡素化:あなたはAndAlsoを使用している必要があります&を使用していること

Dim count As Integer 

For d As Integer = 0 To ServiceDataGridView.Rows.Count - 1 
    If ServiceDataGridView.Rows(d).Cells(2).Value >= DateTimePicker1.Value AndAlso DateTimePicker2.Value <= ServiceDataGridView.Rows(d).Cells(2).Value Then 
     count = count + 1 
     MessageBox.Show(count) 
    End If 
Next 

注 - のDateTimeを使用していないのはなぜこの

0

のようなものをキャッチするために必ずOption Strict Onを切り替える作ります値はのままです。?同様:

Dim startDate = DateTimePicker1.Value 
Dim endDate = DateTimePicker2.Value 
Dim count As Integer 

For d As Integer = 0 To ServiceDataGridView.Rows.Count - 1 
    If ServiceDataGridView.Rows(d).Cells(2).Value >= startDate & endDate <= ServiceDataGridView.Rows(d).Cells(2).Value Then 
     count = count + 1 
     MessageBox.Show(count) 
    End If 
Next 
+0

あなたの返信にGustavが感謝しましたが、私はすでにそのheheheを試しました。テストした後にエラーが発生しました。文字列「dd/mmyyy」をコンバートすることができませんでした。 – Argal

+0

しかし、その文字列はセルの値ではありませんか?もしそうなら、それをDateTimeに変換してください。文字列や数字ではなく、常に日付と時刻を 'DateTime'として扱います。例外なく。 – Gustav

+0

あなたのコードはGustavも私を許してくれます!私が得たエラーは、DataGridviewとDateTimePickerのフォーマットが一致しないためです。私はそれを短いフォーマットにするように設定しています。今はうまく動作しています。よろしく! :) – Argal

関連する問題