DATAGRID P/ TEXTBOX

ALEXANDREHKK 15/04/2010 08:53:12
#339441
bom dia pessoal, meu problema é o seguinte, tenho um datagrid que exibe meus registros, quero que ao clicar no registro no datagrid os textbox sejam preenchidos, porém não estou conseguiindo, a tabela ja possui registros, aparece o seguinte erro: [Ô]Object reference not set to an instance of an object.
abaixo eu colo o código, não entendi muito bem, por gentileza, preciso de ajuda

Obrigado




o erro ocorre na seguinte linha - txtCadLogin.Text = ds.Tables([Ô]usuarios[Ô]).Rows().Item(1).ToString


Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
[ô]reexibir no grid

[ô]Create connection
Dim conn As Common.DbConnection

[ô]create data adapter
Dim da As Common.DbDataAdapter

[ô]create dataset
Dim ds As DataSet = New DataSet

[ô]Set up connection string
Dim cnString As String

Dim sqlQRY As String




cnString = [Ô]datasource=192.168.25.1;username=root;password=senha;database=basededados[Ô]

sqlQRY = [Ô]Select * from usuarios[Ô]

conn = New MySqlConnection(cnString)

Try
[ô] Open connection
conn.Open()

da = New MySqlDataAdapter(sqlQRY, conn)

[ô]create command builder
Dim cb As MySqlCommandBuilder = New MySqlCommandBuilder(da)

[ô]fill dataset
da.Fill(ds, [Ô]Customers[Ô])
txtCadLogin.Text = ds.Tables([Ô]usuarios[Ô]).Rows(0).Item(1).ToString -> tentei colocar (i) e deu erro, nao sei o que fazer
txtcadSenha.Text = ds.Tables([Ô]usuarios[Ô]).Rows(0).Item(2).ToString
txtCadNome.Text = ds.Tables([Ô]usuarios[Ô]).Rows(0).Item(3).ToString
cboPerm.Text = ds.Tables([Ô]usuarios[Ô]).Rows(0).Item(4).ToString



DataGridView1.DataSource = ds
DataGridView1.DataMember = [Ô]Customers[Ô]

Catch ex As Common.DbException
MsgBox(ex.ToString)
Finally
[ô] Close connection
conn.Close()
End Try
KILLER 15/04/2010 09:24:00
#339450
tenta fazer assim, não sei se esta certo não pq fiz de cabeça de uma olha e posta o erro que der ok

Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
[ô]reexibir no grid

[ô]Create connection
Dim conn As Common.DbConnection

[ô]create data adapter
Dim da As Common.DbDataAdapter

[ô]create dataset
Dim ds As DataSet = New DataSet

[ô]Set up connection string
Dim cnString As String

Dim sqlQRY As String




cnString = [Ô]datasource=192.168.25.1;username=root;password=senha;database=basededados[Ô]

sqlQRY = [Ô]Select * from usuarios where Codigo=[Ô] & DataGridView1.Item(Coluna,Linha) [ô]Aqui vc coloca o Codigo do registro clicado

conn = New MySqlConnection(cnString)

Try
[ô] Open connection
conn.Open()

da = New MySqlDataAdapter(sqlQRY, conn)

[ô]create command builder
Dim cb As MySqlCommandBuilder = New MySqlCommandBuilder(da)

[ô]fill dataset
da.Fill(ds, [Ô]Customers[Ô])

if ds.Tables(0).Rows.count = 0 then
exit sub
end if

txtCadLogin.Text = ds.Tables([Ô]usuarios[Ô]).Rows(0).Item(1).ToString
txtcadSenha.Text = ds.Tables([Ô]usuarios[Ô]).Rows(0).Item(2).ToString
txtCadNome.Text = ds.Tables([Ô]usuarios[Ô]).Rows(0).Item(3).ToString
cboPerm.Text = ds.Tables([Ô]usuarios[Ô]).Rows(0).Item(4).ToString

[ô]Você não deve colocar essas duas linhas se não sua grid tera apenas uma linha, a que foi filtrada
[ô]DataGridView1.DataSource = ds
[ô]DataGridView1.DataMember = [Ô]Customers[Ô]

Catch ex As Common.DbException
MsgBox(ex.ToString)
Finally
[ô] Close connection
conn.Close()
End Try

end sub
ALEXANDREHKK 15/04/2010 10:16:06
#339461
killer, bom dia, obrigado por me responder, porém deu um erro novamente
[txt-color=#e80000]Object reference not set to an instance of an object.[/txt-color]
justamente nessa linha:
[txt-color=#0000f0] txtCadLogin.Text = ds.Tables([Ô]usuarios[Ô]).Rows(0).Item(1).ToString[/txt-color]

não entendi essa parte do código:

sqlQRY = [Ô]Select * from usuarios where Codigo=[Ô] & DataGridView1.Item(Coluna,Linha) [ô]Aqui vc coloca o Codigo do registro clicado

sendo que o código seria id e a linha seria a 1 correto? não sei pq, a ajuda do programa me sugere a usar a palavra new para criar uma instancia de objeto, porém eu sou novato é o meu primeiro sistema rsrs...

devo declarar a coluna e a linha? não sei como resolver esse problema

obrigado
KILLER 15/04/2010 10:33:23
#339467
essa linha

sqlQRY = [Ô]Select * from usuarios where Codigo=[Ô] & DataGridView1.Item(Coluna,Linha) [ô]Aqui vc coloca o Codigo do registro clicado

esta filtrando a tabela direto do banco de dados, significa que somente a linha que vc selecionou [Ô]Current Cell[Ô] estara no dataset, codigo seria o campo chave
deve ser id no seu. coluna seria a coluna do campo chave e linha deve ser a linha clicada.

vc deve declarar linha e coluna quando o dataset estiver vazio, mais vc esta preenchendo o seu dataset com o banco, ele não deve estar vazio entao

tenta outra coisa, use um datatable ao invés de um dataset olhe se consegue assim

vc populou a grid no show do form?




ALEXANDREHKK 15/04/2010 11:53:39
#339489
como ficaria o código por gentileza, não entendi o que eu devo fazer
obrigado
KILLER 15/04/2010 13:25:47
#339503
no evento load no Form

[ô]Create connection
Dim conn As Common.DbConnection

[ô]create data adapter
Dim da As Common.DbDataAdapter

[ô]create dataset
Dim ds As DataSet = New DataSet

[ô]Set up connection string
Dim cnString As String

Dim sqlQRY As String

cnString = [Ô]datasource=192.168.25.1;username=root;password=senha;database=basededados[Ô]

sqlQRY = [Ô]Select * from usuarios[Ô]

conn = New MySqlConnection(cnString)

Try
[ô] Open connection
conn.Open()

da = New MySqlDataAdapter(sqlQRY, conn)

[ô]create command builder
Dim cb As MySqlCommandBuilder = New MySqlCommandBuilder(da)

[ô]fill dataset
da.Fill(ds, [Ô]Customers[Ô])

DataGridView1.DataSource = ds
DataGridView1.DataMember = [Ô]Customers[Ô]

Catch ex As Common.DbException
MsgBox(ex.ToString)
Finally
[ô] Close connection
conn.Close()
End Try


No evento [Ô]CellClick[Ô] atencao é [Ô]CellClick[Ô] não [Ô]CellContentClick[Ô]

Dim linha As Int16

linha = dgv.CurrentCell.RowIndex

txtCadLogin.Text = DataGridView1.Item(0, linha).Value
txtcadSenha.Text = DataGridView1.Item(1, linha).Value
txtCadNome.Text = DataGridView1.Item(2, linha).Value
cboPerm.Text = DataGridView1.Item(3, linha).Value

[ô]DataGridView1.Item(Coluna, linha).Value

olha se é isso
BISEWSKI 15/04/2010 15:31:22
#339520
Fera, se você não conseguiu ainda posso postar o código para você e lhe dar uma força.
sds
CALTABIANO 16/04/2010 07:49:04
#339561
Resposta escolhida
[txt-size=2]Meu Caro amigo isso é mais simples do que vc imagina:[/txt-size]

1º Criee um metodo assim por exemplo

Sub LinhaSelecionadaDoGrid()
if dtGrid.RowsCount>0 then
txtNome.text= DtGrid.Rows(DtGrid.SelectedCells(0).RowIndex).Cells(0).Value.ToString()
txtSexo.text= DtGrid.Rows(DtGrid.SelectedCells(0).RowIndex).Cells(1).Value.ToString()
txtIdade.text= DtGrid.Rows(DtGrid.SelectedCells(0).RowIndex).Cells(2).Value.ToString()
end if
End Sub


2º No Evento OnClik do DataGrid vc joga esse metodo e pronto, quando vc clicar na linha seus textbox serão prenchidos
ALEXANDREHKK 16/04/2010 12:08:11
#339595
Deu Certo Caltabiano, muito obrigado
:)
Tópico encerrado , respostas não são mais permitidas