2017-02-10 6 views
0

テーブルを返すSQLクエリを作成しました。VB-SQLクエリをリーダーまたはデータテーブルからテキストボックスに変換する

FAMILY |問題
ファミリーa | 11
ファミリーb | 5
ファミリーc | 17
ファミリーd |私は、Visual Basicの(Visual Studioの2015年)にこのコードを使用してデータテーブルにこのデータを返した28

:私は失われていますどこ

Dim cn As New SqlConnection 
Dim conn As New SqlConnection("connection string here") 

Dim cmd As New SqlCommand 
Dim reader As SqlDataReader 
Dim da2 As New SqlDataAdapter 
cmd.CommandText = "select ........ " 
cmd.CommandType = CommandType.Text 
cmd.Connection = conn 

reader = cmd.ExecuteReader()` 

*ここにはある*私は必要

列1(ファミリ)の値に基づいて問題の数(列2)を選択するコード

私の問題は、ある種のファミリでレコードがないことがあるため、データセットがfamil ies a、c、d ...次回は家族b、dを持つことができます。だから私は本当に行(#)を使用することはできません。私は姓を参照して問題の数を返し、その数値を文字列に入れて、その値をテキストボックスに配置できるコードが必要です。

文字列を変数に代入してからテキストボックスに代入するといいです...その中間にはわかりません!

ありがとうございました!

+1

返されるものを予測しようとするのではなく、データテーブルを埋めると、N行が得られます。 ''選択..... ''は、データがどのように見えるかについて私たちに教えてくれません。どこの句があれば戻って来るものを制御することができます – Plutonix

答えて

2

私は、あなたが必要なものを得るためにLINQのツーのDataTableを使用し、DataTableを埋めるためにSqlDataAdapterを使用することをお勧めしたいです。

Dim table = New DataTable() 
Using conn As New SqlConnection("connection string here") 
    Using da = New SqlDataAdapter("select ........ ", conn) 
     da.Fill(table) 
    End Using 
End Using 

Dim matchingFamily = From row In table.AsEnumerable() 
        Where row.Field(Of String)("Family") = "family a" 
If matchingFamily.Any() Then 
    Dim familyIssueCount As Int32 = matchingFamily.First().Field(Of Int32)("Issues") 
    ' ... ' 
End If 

それは複数の行は、この家族はあなたが任意の行を選択しますFirstので、異なるアプローチを使用する可能性があります含まれている可能性があります場合:また、常にusing -statementを使用しています。 1つの方法は、For Eachを使用してそれらを列挙するか、matchingFamily.Sum(Function(r) r.Field(Of Int32)("Issues"))を使用して問題を合計します。

メモリ内のすべてのレコードを必要としない場合は、...WHERE Family = @familyというデータベースから関連レコードのみを選択することもできます。

+0

この情報をありがとうございます - 私はこれとうまくいって、うまくいくソリューションを見つけることができるかどうかを見ていきます。それ。 – Fredderf81

-1
Private Sub GetFamilyIssues(ByVal FamilyName As String) 
    Dim cn As New SqlConnection("connection string here") 
    cn.Open() 

    Dim sql As String = "select * from FamilyIssues where FAMILY = @Family" 

    Dim cmd As New SqlCommand(sql, cn) 
    cmd.Parameters.AddWithValue("@Family", FamilyName) 

    Dim reader As SqlDataReader = cmd.ExecuteReader 

    txtIssues.Text = "" 
    If reader.HasRows Then 
     txtIssues.Text = reader("ISSUES").ToString() 
    End If 

    cn.Close() 
End Sub 
関連する問題