2016-12-16 9 views
-2

データベースのテーブル名をすべてリストボックス(lbxTables)に読み込もうとしています。私が試したものはすべて "System.Data.DataRowView"でリストボックスをロードします。デフォルトではリストボックスは、同じmsgでSQL結果を返す

Private SqlCon As New SQLCon 
Private Sub LoadTables() 
SqlCon.ExecQuery("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'") 
dgvData.DataSource = SqlCon.SqlDT 
End Sub 

Dim dbPath As String = getConnPath() 
Private SqlCon As New SqlConnection(dbPath & ";Persist Security Info=False;") 
Private SqlCmd As SqlCommand 
Public SqlDA As SqlDataAdapter 
Public SqlDT As DataTable 
Public Params As New List(Of SqlParameter) 
Public RecordCount As Integer 
Public Exception As String 
    Public Sub ExecQuery(Query As String) 
    RecordCount = 0 
    Exception = "" 
    Try 
     SqlCon.Open() 
     SqlCmd = New SqlCommand(Query, SqlCon) 
     Params.ForEach(Sub(p) SqlCmd.Parameters.Add(p)) 
     Params.Clear() 
     SqlDT = New DataTable 
     SqlDA = New SqlDataAdapter(SqlCmd) 
     RecordCount = SqlDA.Fill(SqlDT) 
    Catch ex As Exception 
     Exception = ex.Message 
    Finally 
     If SqlCon.State = ConnectionState.Open Then SqlCon.Close() 
    End Try 
End Sub 
Public Sub AddParam(Name As String, Value As Object) 
    Dim NewParam As New SqlParameter(Name, Value) 
    Params.Add(NewParam) 
End Sub 
+0

あなたの質問のタイトルは、あなたが求めている問題や質問を実際に記述しているものに編集してください。コントロール名と言語の名前(使用したタグから利用可能)の束を使用しました。あなたのタイトルは、将来の読者に検索結果に表示される意味を持つ方法であなたの投稿を説明する必要があります。あなたの現在のタイトルは、それを見ている私たちにとっても無意味であり、今後の読者にとっては価値が低くなります。 –

答えて

1

ListBoxは、表示するテキストを取得するために各アイテムでToStringを呼び出します。ほとんどの型の場合、ToStringは単に型名を返します。これはあなたがこの場合に見ているものです。特定のプロパティまたは列の値を表示する場合は、そのプロパティまたは列の名前をDisplayMemberプロパティのListBoxに割り当てる必要があります。同じことがComboBoxにも当てはまります。

+0

'lbxTables.DisplayMember'を' TABLE_NAME'に設定するとうまくいくと思います。 – SSS

関連する問題