DO DATAGRID PARA TEXTBOX
Bom dia a todos.
Imports System.Data.OleDb
Public Class Form1
Dim CN As New ADODB.Connection
Dim RS, RS1 As New ADODB.Recordset
Dim da As New OleDbDataAdapter
Dim ds As New DataSet
Private Sub datagridconfig()
DataGrid1.AutoGenerateColumns = False
DataGrid1.Columns.Add([Ô]empresa[Ô], [Ô]Clientes[Ô])
DataGrid1.Columns(0).DataPropertyName = [Ô]empresa[Ô]
DataGrid1.Columns(0).AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
End Sub
Private Sub errorcheck()
If Err.Number <> 0 Then
MsgBox([Ô]Não foi possÃvel acessar o banco de dados.[Ô])
Exit Sub
Else
[ô]MsgBox([Ô]The Northwind database was opened successfully.[Ô])
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
CN = New ADODB.Connection [ô]conexao usando ADO
CN.Open([Ô]Provider = MICROSOFT.JET.OLEDB.4.0;data Source= d:\Fibertex.mdb [Ô])
errorcheck()
Call CarregaGrid() [ô]exibe informação da tabela no grid
End Sub
Private Sub CarregaGrid()
RS = New ADODB.Recordset
RS.Open([Ô]select * from contatos order by empresa[Ô], CN, 1, 2)
da = New OleDbDataAdapter
ds = New DataSet
da.Fill(ds, RS, [Ô]contatos[Ô])
datagridconfig()
DataGrid1.DataSource = ds.Tables([Ô]contatos[Ô])
DataGrid1.Refresh()
TextBox9.Text = DataGrid1.RowCount
End Sub
Private Sub DataGrid1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGrid1.MouseUp
Dim i As Integer
i = DataGrid1.CurrentRow.Index
TextBox1.Text = DataGrid1.Item(0, i).Value()
End Sub
End Class
No código acima eu consegui preencher um datagridview com uma coluna de uma tabela access onde existe várias colunas.
No grid tenho somente o nome do Cliente. Quero clicar nele e fazer aparecer todas as informações referente a ele no textboxs...
Através desse código TextBox1.Text = DataGrid1.Item(0, i).Value() eu consigo já preencher um texbox com o mesmo conteudo do grid, o nome do cliente.
Mas quando tento pegar as outras informações sempre dá erro. Acredito que não posso usar o mesmo código por que como no grid só é mostrado uma coluna, a Clientes, só ela tem valor, as outras não.
Como faço então para preencher esses dados do lcientes? Tenho uma Dataset e um Recordset. é atraves deles que eu pego o restante das informações?
Como?
Por que já fiz testes e não consegui muita coisa...
Grato.
Imports System.Data.OleDb
Public Class Form1
Dim CN As New ADODB.Connection
Dim RS, RS1 As New ADODB.Recordset
Dim da As New OleDbDataAdapter
Dim ds As New DataSet
Private Sub datagridconfig()
DataGrid1.AutoGenerateColumns = False
DataGrid1.Columns.Add([Ô]empresa[Ô], [Ô]Clientes[Ô])
DataGrid1.Columns(0).DataPropertyName = [Ô]empresa[Ô]
DataGrid1.Columns(0).AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
End Sub
Private Sub errorcheck()
If Err.Number <> 0 Then
MsgBox([Ô]Não foi possÃvel acessar o banco de dados.[Ô])
Exit Sub
Else
[ô]MsgBox([Ô]The Northwind database was opened successfully.[Ô])
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
CN = New ADODB.Connection [ô]conexao usando ADO
CN.Open([Ô]Provider = MICROSOFT.JET.OLEDB.4.0;data Source= d:\Fibertex.mdb [Ô])
errorcheck()
Call CarregaGrid() [ô]exibe informação da tabela no grid
End Sub
Private Sub CarregaGrid()
RS = New ADODB.Recordset
RS.Open([Ô]select * from contatos order by empresa[Ô], CN, 1, 2)
da = New OleDbDataAdapter
ds = New DataSet
da.Fill(ds, RS, [Ô]contatos[Ô])
datagridconfig()
DataGrid1.DataSource = ds.Tables([Ô]contatos[Ô])
DataGrid1.Refresh()
TextBox9.Text = DataGrid1.RowCount
End Sub
Private Sub DataGrid1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGrid1.MouseUp
Dim i As Integer
i = DataGrid1.CurrentRow.Index
TextBox1.Text = DataGrid1.Item(0, i).Value()
End Sub
End Class
No código acima eu consegui preencher um datagridview com uma coluna de uma tabela access onde existe várias colunas.
No grid tenho somente o nome do Cliente. Quero clicar nele e fazer aparecer todas as informações referente a ele no textboxs...
Através desse código TextBox1.Text = DataGrid1.Item(0, i).Value() eu consigo já preencher um texbox com o mesmo conteudo do grid, o nome do cliente.
Mas quando tento pegar as outras informações sempre dá erro. Acredito que não posso usar o mesmo código por que como no grid só é mostrado uma coluna, a Clientes, só ela tem valor, as outras não.
Como faço então para preencher esses dados do lcientes? Tenho uma Dataset e um Recordset. é atraves deles que eu pego o restante das informações?
Como?
Por que já fiz testes e não consegui muita coisa...
Grato.
Gente, consegui, esse é o código...
TextBox2.Text = ds.Tables([Ô]contatos[Ô]).Rows(i).Item(0)
Agora tenho outro problema, quando um dos campos está vazio, por exemplo o campo cep, onde na tabela está em branco, ele dá um erro de DBNull...
Como evito esse erro? Afinal, estar em branco um resultado não é problema...
TextBox2.Text = ds.Tables([Ô]contatos[Ô]).Rows(i).Item(0)
Agora tenho outro problema, quando um dos campos está vazio, por exemplo o campo cep, onde na tabela está em branco, ele dá um erro de DBNull...
Como evito esse erro? Afinal, estar em branco um resultado não é problema...
tenta colocar ToString no final de cada linha assim:
TextBox2.Text = ds.Tables([Ô]contatos[Ô]).Rows(i).Item(0).ToString
TextBox2.Text = ds.Tables([Ô]contatos[Ô]).Rows(i).Item(0).ToString
Conversion from type [ô]DBNull[ô] to type [ô]String[ô] is not valid.
Eu recebo essa menssagem colocando ou não tostring...
EDIT:
Desculpe, realmente bastou usar o .ToString.
Eu tinha colocado antes Cstr()e por isso não deu certo usar o tostring...
Muito obrigado
Eu recebo essa menssagem colocando ou não tostring...
EDIT:
Desculpe, realmente bastou usar o .ToString.
Eu tinha colocado antes Cstr()e por isso não deu certo usar o tostring...
Muito obrigado
bom dia, esse tópico é justamente o que eu preciso para usar no meu projeto, porém fiz da mesma forma e ta gerando um erro, [Ô]Object reference not set to an instance of an object.
quero que ao clicar num registro do grid os dados sejam preenchidos nos txtEdits
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
quero que ao clicar num registro do grid os dados sejam preenchidos nos txtEdits
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
se eu não me engano esse erro ocorre pq ele não consegue encontrar essa linha.
na linha: da.Fill(ds,[Ô]Customers[Ô])
tenta só: da.Fill(ds)
e tenta:
txtCadLogin.Text = ds.Tables(0).Rows(0).Item(1).ToString
lembrando que a Tables é o nome ou index da tabela
Rows nome ou index da linha
Item nome ou index da Coluna
na linha: da.Fill(ds,[Ô]Customers[Ô])
tenta só: da.Fill(ds)
e tenta:
txtCadLogin.Text = ds.Tables(0).Rows(0).Item(1).ToString
lembrando que a Tables é o nome ou index da tabela
Rows nome ou index da linha
Item nome ou index da Coluna
não deu certo, continua dando erro :(
no banco de dados essa tabela tem algum registro?
Tópico encerrado , respostas não são mais permitidas