2016-12-16 16 views
-2

における位置の何行目は、私は、この条件を持っているがありません:例外を回避するためにどのようにVB.NET

If IsNothing(ds.Tables(0).Rows(rowData).Item("DATE")) Then 
Else 
    txtDATE.Text = ds.Tables(0).Rows(rowData).Item("DATE") 
End If 

今まで、私はそれが同じエラーである何。 どうすれば解決できますか?

+0

さて、 'rowData'とは何ですか?この数値は' ds.Tables(0).Rows.Count'の値を超えていますか?デバッガを使用して確認します。 .NETのすべてのインデックスは、位置0から始まることがわかりますか?したがってforループは0から 'Rows.Count - 1'まで実行されます。 –

+0

rowDateは整数です。私は10まで行くループがありますが、私のデータセットは時には10行未満です。 – SeaSide

+3

@Seasise:答えが –

答えて

3

私は10までループしていますが、私のデータセットは時々 の10行未満です。私はdinamically TextBoxコントロールを作成したいと には、設定されたデータからテキストセットが、10行のデータセットがデータ を持っていない場合だけであることをチェックするためにIfを使用して、空のTextBoxその後

のテキストを残すために条件:

For rowData As Int32 = 0 To 10 
    ' ..... 
    If ds.Tables(0).Rows.Count > rowData Then 
     Dim dt As Date? = ds.Tables(0).Rows(rowData).Field(Of Date?)("DATE") 
     txtDATE.Text = If(dt.HasValue, dt.Value.ToString(), "") 
    Else 
     txtDATE.Text = "" 
    End If 
Next 

IsNothingを使用しているため)この列はnull可能な日付列です。次に、Date?を使用することをお勧めします。したがって、null可能な型をサポートするDataRowExtensions.Fieldを使用できます。

+0

素晴らしい!ありがとうございました。 – SeaSide

1

10個のテキストボックスの代わりに、1個のDataGridViewコントロールしか使用できません。

だけで存在していたデータのためのあなたの日付値(これもデザイナーで行うことができます)

Dim column As New DataGridViewTextBoxColumn With 
{ 
    Header = "Date" 
    DataPropertyName = "DATE" 
} 

yourDataGridView.Columns.Add(column) 
yourDataGridView.AutoGenerateColumns = False 

はその後の行を生成します

yourDataGridView.DataSource = ds.Tables(0) 

のDataGridViewのDataSourceとしてあなたのDataTableを使用を表す一つの列を追加します。データ表。
必要に応じてDataGridViewの「衣装」をカスタマイズできます。

+0

OPには1つではなく、テキストが必要な10個のテキストボックスがあるようです。また、行がない場合、古いテキストをString.Emptyで上書きしないでください。たとえば、位置10にあるとします。 –

+0

@TimSchmelter - 別の方法で正しい更新を返します。 – Fabio

関連する問題