DO DATAGRID PARA TEXTBOX

BISEWSKI 14/04/2010 07:21:53
#339294
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.
BISEWSKI 14/04/2010 07:45:04
#339295
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...
KILLER 14/04/2010 08:09:08
#339297
Resposta escolhida
tenta colocar ToString no final de cada linha assim:

TextBox2.Text = ds.Tables([Ô]contatos[Ô]).Rows(i).Item(0).ToString
BISEWSKI 14/04/2010 08:36:48
#339307
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
ALEXANDREHKK 14/04/2010 10:23:56
#339320
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
KILLER 14/04/2010 10:49:48
#339329
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
ALEXANDREHKK 14/04/2010 11:58:55
#339339
não deu certo, continua dando erro :(
KILLER 14/04/2010 13:08:32
#339343
no banco de dados essa tabela tem algum registro?
Tópico encerrado , respostas não são mais permitidas