2013-12-18 2 views
1

안녕하세요, 프런트 엔드로 SQL Server를 사용하는 작은 데이터베이스를 만들고 있습니다. 그것은 그러나 작동 내가이 오류를 우연히 발견 한했다. 내 코드가 정말 도움을 부탁드립니다 아래와 같습니다다중 부분 식별자 "System.Data.DataRowView"를 바인딩 할 수 없습니다. "SQL Server + VB.NET

.

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged 
     Dim cmd As New SqlCommand 
     conn = New SqlConnection(connectionstring) 
     conn.Open() 
     cmd = New SqlCommand("select tarif from tarif_sewa where kode_tarif = " & ComboBox1.Text & "", conn) 
     TextBox2.Text = cmd.ExecuteScalar 
     conn.Close() 

    End Sub 
End Class 
+0

공식적으로 잘못이 오류가 (그렇지 않은 반면 가장 좋은 방법으로 추천 할) 것을 코드에 의해 방출 될 수있는 방법을 알아낼 수 없습니다? – Steve

+0

내용은 "1,2,3"처럼 kode_tarif가 – Newbie

+0

입니다.이 코드에서이 오류가 발생 했습니까? 콤보 상자의 Text 속성을 사용하는 경우가 아니라 SelectedItem 속성을 사용하면이 오류가 발생할 수 있습니다. 글쎄, 코멘트에 코드를 게시 할 수 없습니다, 그래서 나는 가능한 답안으로 답변을 제안합니다. 작동하는지 알려 주시면 – Steve

답변

0

쿼리에서 올바른 접근 방식은

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged 
    Using conn = New SqlConnection(connectionstring) 
    Using cmd = New SqlCommand("select tarif from tarif_sewa where kode_tarif = @p1", conn) 
     conn.Open() 
     cmd.Parameters.AddWithValue("@p1", ComboBox1.Text) 
     Dim result = cmd.ExecuteScalar 
     If result IsNot Nothing Then 
      ' A better conversion could be applied knowing the exact datatype of tarif ' 
      TextBox2.Text = result.ToString 
     End If 
    End Using 
    End Using 
End Sub 

이 의지가 있어야한다 아르 자형 문자열 연결을 매개 변수화 된 쿼리와 연결하고 일회용 개체를 Using 문으로 묶습니다.

그러나 난 안가 ComboBox.Text의 내용은 무엇입니까