PROBLEMA DATAGRID E TEXTBOX

PI321 16/02/2012 09:48:55
#394872
Bom dia a todos , bom pessoal estou com uma duvida criei um grid utilizando os comandos sql.. meu banco é em .mbd

Certo. Ele carregou direitinho quando abro o form ele esta la corretamente.. porém quando eu clico no grid em um registro as textbox que estão acima nao trocam.. elas nao se posicionam naquele registro . não sei se consegui expressar direito aqui. vou mostrar um exemplo ..

textbox1 o texto dela é 123

ai no grid aparece

123
456
789

se eu clicar no 456 a textbox1 nao carrega o texto 456..

ela fica com o 123 estático pq ele éo primeiro registro ..
por favor se alguem puder me ajudar..
Obrigado
ALTAIR148 16/02/2012 10:38:34
#394877
Bom dia,

Simples assim:



  Private Sub DataGridView1_CellEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEnter
Me.TextBox1.Text = DataGridView1.CurrentRow.Cells([Ô]ID[Ô]).Value
End Sub
PI321 16/02/2012 10:47:15
#394879
altair vou testar , post o o resultado aqui ja .
PI321 16/02/2012 11:03:52
#394886
altair nao funcionou .. oq acontece ..
quando eu faço isto os dados foram para as texts.. porém .. quando eu clico em atualizar.. eu mudo os valores e aperto salvar.. ele nao altera o registro que escolhi , ele altera o primeiro registro que está la.. aii quando eu fecho o form e abro ele novamente. ele duplica todos os registros .. ex. eu tenho 4 registros la.. clico no terceiro e altero... quando eu abro ele de novo .. ele alterou o primeiro . e a tabela esta com 8 registros ..
PI321 16/02/2012 11:05:40
#394887
Dim conn As New OleDbConnection([Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\bd_coifa1.mdb[Ô])
Dim da As OleDbDataAdapter
Dim dt As New DataTable
Public sql As String

Public Sub CarregaTexto()

Me.txtdata.Value = dgvprojetos.CurrentRow.Cells(1).Value
Me.txtrazao.Text = dgvprojetos.CurrentRow.Cells(2).Value
Me.txtcontato.Text = dgvprojetos.CurrentRow.Cells(4).Value
Me.txtemail.Text = dgvprojetos.CurrentRow.Cells(3).Value
Me.txttelefone.Text = dgvprojetos.CurrentRow.Cells(5).Value
Me.txtdescricao.Text = dgvprojetos.CurrentRow.Cells(6).Value
Me.cmbstatus.Text = dgvprojetos.CurrentRow.Cells(7).Value
Me.txtos.Text = dgvprojetos.CurrentRow.Cells(8).Value
End Sub

Public Sub ChamaTabela()
dgvprojetos.Refresh()
sql = ([Ô]SELECT Controle_projetos.Código, Controle_projetos.data, Controle_projetos.cod_cliente, Controle_projetos.email, Controle_projetos.contato, Controle_projetos.telefone, Controle_projetos.descricao, Status_projetos.Status, Controle_projetos.OS FROM (Status_projetos INNER JOIN Controle_projetos ON Status_projetos.Código = Controle_projetos.cod_status)[Ô])
da = New OleDbDataAdapter(sql, conn)
da.Fill(dt)
dgvprojetos.Refresh()
dgvprojetos.DataSource = dt
da.Dispose()
conn.Close()
End Sub

Private Sub btnalterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnalterar.Click
If Me.Controle_projetosBindingSource.Count = 0 Then
MsgBox([Ô]Não existe dados a serem alterados![Ô])
Else
tratarBotoes()
TratarEdits()
EDITAR = 1
End If
[ô]dgvassist.Enabled = False
[ô]txtpesquisa.Enabled = False
txtpesquisa.Clear()
End Sub

Private Sub btnsalvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsalvar.Click
If cmbstatus.SelectedValue = Nothing Then
MsgBox([Ô]Selecione o Status![Ô])
ElseIf EDITAR = 1 Then
Me.Validate()
Me.Controle_projetosBindingSource.EndEdit()
Me.Controle_projetosTableAdapter.Update(Me.Bd_coifa1DataSet.Controle_projetos)
Me.Controle_projetosTableAdapter.Fill(Me.Bd_coifa1DataSet.Controle_projetos)
tratarBotoes()
TratarEdits()
EDITAR = 0
NOVO = 0
MsgBox([Ô]Alterado com sucesso![Ô])
ElseIf PRIMEIRO = 1 Then
Me.Controle_projetosTableAdapter.Insert(txtdata.Value, txtrazao.Text, txtcontato.Text, txtemail.Text, txttelefone.Text, txtdescricao.Text, cmbstatus.SelectedValue, txtos.Text)
Me.Controle_projetosTableAdapter.Fill(Me.Bd_coifa1DataSet.Controle_projetos)
tratarBotoes()
TratarEdits()
NOVO = 0
PRIMEIRO = 0
MsgBox([Ô]Gravado com sucesso![Ô])
Else
Me.Controle_projetosTableAdapter.Insert(txtdata.Value, txtrazao.Text, txtcontato.Text, txtemail.Text, txttelefone.Text, txtdescricao.Text, cmbstatus.SelectedValue, txtos.Text)
Me.Controle_projetosTableAdapter.Fill(Me.Bd_coifa1DataSet.Controle_projetos)
Me.Controle_projetosTableAdapter.Fill(Me.Bd_coifa1DataSet.Controle_projetos)
tratarBotoes()
TratarEdits()
NOVO = 0
MsgBox([Ô]Gravado com sucesso![Ô])
End If
txtpesquisa.Clear()
Me.Controle_projetosBindingSource.RemoveFilter()
Me.Dt_projetosBindingSource.RemoveFilter()
End Sub

Private Sub dgvprojetos_CellEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvprojetos.CellEnter
CarregaTexto()
End Sub

Postei os códigos .. se puder me ajudar por favor.. Obrigado
ALTAIR148 16/02/2012 13:02:49
#394904
Boa tarde,

Aparentemente o erro seria no trecho abaixo.

 ElseIf PRIMEIRO = 1 Then
Me.Controle_projetosTableAdapter.Insert(txtdata.Value, txtrazao.Text, txtcontato.Text, txtemail.Text, txttelefone.Text, txtdescricao.Text, cmbstatus.SelectedValue, txtos.Text)


Debugue o seu código e verifique se quando você manda alterar, se você esta entrando dentro desse IF. Provavelmente você esta entrando dentro dessa condição e por isso ele esta duplicando os registros.
PI321 16/02/2012 13:13:29
#394906
mais pq ele nao altera o registro clicado ... ele altera a primeira posicao ???
ALTAIR148 16/02/2012 13:21:05
#394907
Tenta o código abaixo.

Dim conn As New OleDbConnection([Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\bd_coifa1.mdb[Ô])
Dim da As OleDbDataAdapter
Dim dt As New DataTable
Public sql As String

Public Sub CarregaTexto()

Me.txtdata.Value = dgvprojetos.CurrentRow.Cells(1).Value
Me.txtrazao.Text = dgvprojetos.CurrentRow.Cells(2).Value
Me.txtcontato.Text = dgvprojetos.CurrentRow.Cells(4).Value
Me.txtemail.Text = dgvprojetos.CurrentRow.Cells(3).Value
Me.txttelefone.Text = dgvprojetos.CurrentRow.Cells(5).Value
Me.txtdescricao.Text = dgvprojetos.CurrentRow.Cells(6).Value
Me.cmbstatus.Text = dgvprojetos.CurrentRow.Cells(7).Value
Me.txtos.Text = dgvprojetos.CurrentRow.Cells(8).Value
End Sub

Public Sub ChamaTabela()
dgvprojetos.Refresh()
sql = ([Ô]SELECT Controle_projetos.Código, Controle_projetos.data, Controle_projetos.cod_cliente, Controle_projetos.email, Controle_projetos.contato, Controle_projetos.telefone, Controle_projetos.descricao, Status_projetos.Status, Controle_projetos.OS FROM (Status_projetos INNER JOIN Controle_projetos ON Status_projetos.Código = Controle_projetos.cod_status)[Ô])
da = New OleDbDataAdapter(sql, conn)
da.Fill(dt)
dgvprojetos.Refresh()
dgvprojetos.DataSource = dt
da.Dispose()
conn.Close()
End Sub

Private Sub btnalterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnalterar.Click
If Me.Controle_projetosBindingSource.Count = 0 Then
MsgBox([Ô]Não existe dados a serem alterados![Ô])
Else
tratarBotoes()
TratarEdits()
EDITAR = 1
End If
[ô]dgvassist.Enabled = False
[ô]txtpesquisa.Enabled = False
txtpesquisa.Clear()
End Sub

Private Sub btnsalvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsalvar.Click
If cmbstatus.SelectedValue = Nothing Then
MsgBox([Ô]Selecione o Status![Ô])
ElseIf EDITAR = 1 Then
Me.Validate()
Me.Controle_projetosBindingSource.EndEdit()
Me.Controle_projetosTableAdapter.Updatet(txtdata.Value, txtrazao.Text, txtcontato.Text, txtemail.Text, txttelefone.Text, txtdescricao.Text, cmbstatus.SelectedValue, txtos.Text)
Me.Controle_projetosTableAdapter.Fill(Me.Bd_coifa1DataSet.Controle_projetos)
tratarBotoes()
TratarEdits()
EDITAR = 0
NOVO = 0
MsgBox([Ô]Alterado com sucesso![Ô])
ElseIf PRIMEIRO = 1 Then
Me.Controle_projetosTableAdapter.Insert(txtdata.Value, txtrazao.Text, txtcontato.Text, txtemail.Text, txttelefone.Text, txtdescricao.Text, cmbstatus.SelectedValue, txtos.Text)
Me.Controle_projetosTableAdapter.Fill(Me.Bd_coifa1DataSet.Controle_projetos)
tratarBotoes()
TratarEdits()
NOVO = 0
PRIMEIRO = 0
MsgBox([Ô]Gravado com sucesso![Ô])
Else
Me.Controle_projetosTableAdapter.Insert(txtdata.Value, txtrazao.Text, txtcontato.Text, txtemail.Text, txttelefone.Text, txtdescricao.Text, cmbstatus.SelectedValue, txtos.Text)
Me.Controle_projetosTableAdapter.Fill(Me.Bd_coifa1DataSet.Controle_projetos)
Me.Controle_projetosTableAdapter.Fill(Me.Bd_coifa1DataSet.Controle_projetos)
tratarBotoes()
TratarEdits()
NOVO = 0
MsgBox([Ô]Gravado com sucesso![Ô])
End If
txtpesquisa.Clear()
Me.Controle_projetosBindingSource.RemoveFilter()
Me.Dt_projetosBindingSource.RemoveFilter()
End Sub

Private Sub dgvprojetos_CellEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvprojetos.CellEnter
CarregaTexto()
End Sub
PI321 16/02/2012 13:39:43
#394914
altair nao funcionou cara.. nao sei mais oq faço...

vc ainda tem aquela con.. pelo teamviewer eu ainda estou com aqueele mesmo msn se vc tiver um tempo para dar uma olhada cara.. ta dificil mto complicado mesmo
ALTAIR148 16/02/2012 14:06:31
#394921
Eu posso dar uma olhada somente a noite.
PI321 16/02/2012 14:10:09
#394922
vamos ver se conseguimos entao .. eu vou para a faculdade ... aii tentamos se der pra vc cara.. to desesperado nao aguento mais tentar tentar tentar tentar e nada ...
tentei ja umas mil possibilidades .. nao sei pq ele esta puxando o primeiro registro e alterando ele .. isso q eh o mais estranho de tudo ..

ele deveria estar posicionando no registro certo po estranho mesmo isso .. eu clicar no registro alterar e salvar .. ele valida com AKELE alterado e nao o primeiro da tabela
Página 1 de 2 [15 registro(s)]
Tópico encerrado , respostas não são mais permitidas