6

やあ、

10 個のテキスト フィールドと 1 個のコンボボックスを含む Windows フォームがあります。

ユーザーがコンボ ボックスでレコードを選択すると、フォームのデータ テーブル変数 ( dtBranchesと呼ばれる) でそのレコードを検索し、データ行から 10 個のテキスト フィールドを入力します。

私はこれを試しました:

Dim dr As System.Data.DataRow
If mSortCode > 0 Then
    dr = dtBranches.Select("SortCode='" & mSortCode & "'")
    Me.txtBranch.Text = dr("Branch").ToString()
    Me.txtBankName.Text = dr("BankName").ToString()
    Me.txtBranchTitle.Text = dr("BranchTitle").ToString()
    Me.txtReference.Text = dr("Ref").ToString
    Me.txtAddr1.Text = dr("Address1").ToString
    Me.txtAddr2.Text = dr("Address2").ToString
    Me.txtAddr3.Text = dr("Address3").ToString
    Me.txtPostCode.Text = dr("PostCode").ToString
    Me.txtTelNo.Text = dr("TelephoneNumber").ToString
    Me.txtTown.Text = dr("Town").ToString
    Me.txtTelNo.Text = dr("TelephoneNumber").ToString
end if

しかし、それをコンパイルすることはできません...

これを行うための正しくて最良の方法は何ですか?

ありがとう

フィリップ

4

2 に答える 2

10

DataTable.Selectは、DataRows の配列を返します。結果を受け取るには配列を宣言する必要があります

Dim dr() As System.Data.DataRow

もちろん、行が返されたかどうかを確認し、配列の最初の行をアドレス指定する必要があります

dr = dtBranches.Select("SortCode='" & mSortCode & "'")
If dr.Length > 0 Then
    Me.txtBranch.Text = dr(0)("Branch").ToString()
    Me.txtBankName.Text = dr(0)("BankName").ToString()
    ...... and so on ...
于 2013-06-28T14:14:45.180 に答える
2

代わりにLinq-ToDataSet、強く型付けされたメソッドを使用します。Field

Dim matches = From row In dtBranches
              Let SortCode = row.Field(Of String)("SortCode")
              Where SortCode = mSortCode
If matches.Any() Then
    Dim row = matches.First()
    Me.txtBranch.Text = row.Field(Of String)("Branch")
    Me.txtBankName.Text = row.Field(Of String)("BankName")
    Me.txtBranchTitle.Text = row.Field(Of String)("BranchTitle")
    Me.txtReference.Text = row.Field(Of String)("Ref")
    Me.txtAddr1.Text = row.Field(Of String)("Address1")
    Me.txtAddr2.Text = row.Field(Of String)("Address2")
    Me.txtAddr3.Text = row.Field(Of String)("Address3")
    Me.txtPostCode.Text = row.Field(Of String)("PostCode")
    Me.txtTelNo.Text = row.Field(Of String)("TelephoneNumber")
    Me.txtTown.Text = row.Field(Of String)("Town")
Else
    MesageBox.Show("SortCode not found.")
End If

大文字と小文字を区別せずに比較する場合は、Where上記を次のように置き換えます。

Where StringComparer.OrdinalIgnoreCase.Equals(SortCode, mSortCode)

ところで、あなたは電話番号を 2 回割り当てています。

于 2013-06-28T14:23:32.290 に答える