Já existe um DataReader aberto associado a este comando que deve ser fechado primeiro.

EDN Admin

Well-known member
Joined
Aug 7, 2010
Messages
12,794
Location
In the Machine
Boa tarde a todos,
Galera minha duvida é o seguinte tenho uma tabela cliente com varios dados, e criei uma combo que carrego o nome de todos os clientes.
Estou tentando fazer o seguinte quando seleciono um valor da combo quero preencher o resto dos dados desse cliente em umas textbox que tenho, até consegui fazer assim mas apenas com o evento click das textbox, não sei qual o evento proprio da combo para isso, só que quando eu troco um valor na combo gera esse erro: Já existe um DataReader aberto associado a este comando que deve ser fechado primeiro.
Alguém tem alguma dica sobre essas 2 dúvidas? Agradeço desde já e tenha um bom fim de semana.
Segue meu código abaixo:
PS: no caso estou fazendo apenas com o campo telefone.Imports System.Data.OleDb
Public Class AlteraCliente
Dim Conn As OleDb.OleDbConnection
Dim sConnString As String = _
"Provider=OraOLEDB.Oracle;" & _
"Data Source=XE;" & _
"User ID=system;" & _
"Password=123"
Dim cmd As New OleDb.OleDbCommand()
Dim dtadp As OleDbDataAdapter = New OleDbDataAdapter
Dim ds As DataSet
Dim commandBuilder As New OleDbCommandBuilder(dtadp)
Dim dtcliente As New DataTable()
Dim dr As OleDbDataReader


Private Sub carregacliente()




cmd.CommandText = "select * from cliente"

dtcliente.Clear()

dtadp.SelectCommand = cmd
dtadp.Fill(dtcliente)

cboNome.DataSource = dtcliente
cboNome.DisplayMember = "CLI_NOME"
cboNome.ValueMember = "CLI_COD"
cboNome.SelectedIndex = -1

End Sub


Private Sub AlteraCliente_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


Conn = New OleDb.OleDbConnection(sConnString)
cmd.Connection = Conn
Conn.Open()


End Sub

Private Sub carregadados()


dr = cmd.ExecuteReader

cmd.CommandText = "select * from cliente where cli_cod = " & cboNome.SelectedValue & ""


If (dr.Read()) Then
txtTel1.Text = dr("cli_fone1").ToString


Else
txtTel1.Text = ""


End If


End Sub

Private Sub txtTel2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTel2.Click


End Sub

Private Sub cboNome_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboNome.Click
carregacliente()

End Sub


Private Sub txtTel1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTel1.Click
carregadados()
End Sub
End Class

View the full article
 
Back
Top