AnaGPSI Posted April 26, 2012 at 09:32 AM Report #451520 Posted April 26, 2012 at 09:32 AM Olá bom dia no meu programa tenho uma datagridview e mostra todos os cursos já existentes na tabela cursos do access inclusive o que introduzo na textbox antes da datagridview mas os dados que me aparecem na datagridview aparacem todos na mesma coluna e eu tenho duas colunas uma com o nome do curso, outra com a sigla: Help me please! :bored: O código está aqui! Private Sub curso_disciplinas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load TabControl1.SelectedIndex = TabIndexASelecionar Const constr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\GPSI\Documents\mydb.accdb" Dim mydb As New OleDbConnection(constr) mydb.Open() MsgBox("State: " & mydb.State.ToString(), MsgBoxStyle.Information) Dim sql As String sql = "Select nome, sigla From curso" Dim cmd As New OleDbCommand(sql, mydb) cmd.Parameters.Add("nome", OleDbType.VarChar).Value = txtaddcursonome.Text cmd.Parameters.Add("sigla", OleDbType.VarChar).Value = txtaddcursosigla.Text Dim leitor As OleDbDataReader = cmd.ExecuteReader() While leitor.Read() DataGridView1.Item.add(leitor.GetValue(1)) End While End Sub EDIT: GeSHi adicionado
Caça Posted April 26, 2012 at 09:58 AM Report #451526 Posted April 26, 2012 at 09:58 AM DataGridView1.Rows.Add(leitor.GetValue(0), leitor.GetValue(1), ...) Pedro Martins Não respondo a duvidas por PM
Andrepereira9 Posted April 26, 2012 at 10:02 AM Report #451527 Posted April 26, 2012 at 10:02 AM Boas 1º Estás a ir buscar valores a 2 colunas, mas só estás a indicar para ele apresentar o que esta na 2º coluna Altera esta linha DataGridView1.Item.add(leitor.GetValue(1)) 'Teres "Item" em vez de "Rows" não te dá erro? A mim diz que não aceita esses argumentos. Por esta DataGridView1.Rows.Add(leitor.GetValue(0), leitor.GetValue(1)) 2º As 2 linhas com os parâmetros cmd.Parameters.Add("nome", OleDbType.VarChar).Value = txtaddcursonome.Text cmd.Parameters.Add("sigla", OleDbType.VarChar).Value = txtaddcursosigla.Tex não te servem de nada, pois não os estás a utilizar A informática chegou para resolver problemas que antes não existiam Quem ri por último é porque está conectado a 52 Kbs.
AnaGPSI Posted April 26, 2012 at 10:54 AM Author Report #451537 Posted April 26, 2012 at 10:54 AM Mas as siglas dos cursos continuam na coluna do nome!
Caça Posted April 26, 2012 at 10:59 AM Report #451538 Posted April 26, 2012 at 10:59 AM Agora tu é que tens de posicionar os valores. Pedro Martins Não respondo a duvidas por PM
AnaGPSI Posted April 26, 2012 at 11:03 AM Author Report #451541 Posted April 26, 2012 at 11:03 AM Pois, mas como? Já me fartei de procurar! Com as alterações o código ficou assim: Private Sub curso_disciplinas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load TabControl1.SelectedIndex = TabIndexASelecionar Const constr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\GPSI\Documents\mydb.accdb" Dim mydb As New OleDbConnection(constr) mydb.Open() MsgBox("State: " & mydb.State.ToString(), MsgBoxStyle.Information) Dim sql As String sql = "Select nome, sigla From curso" Dim cmd As New OleDbCommand(sql, mydb) Dim leitor As OleDbDataReader = cmd.ExecuteReader() While leitor.Read() DataGridView1.Rows.Add(leitor.GetValue(1)) End While End Sub EDIT: GeSHi adicionado
Caça Posted April 26, 2012 at 11:12 AM Report #451544 Posted April 26, 2012 at 11:12 AM Como te dissemos, DataGridView1.Rows.Add(ValorParaAColuna1, ValorParaAColuna2, ValorParaAColuna3, ...) Pedro Martins Não respondo a duvidas por PM
AnaGPSI Posted April 26, 2012 at 11:17 AM Author Report #451546 Posted April 26, 2012 at 11:17 AM Para (valorparacoluna1...) coloco o nome do atributo da tabela?
Caça Posted April 26, 2012 at 11:19 AM Report #451552 Posted April 26, 2012 at 11:19 AM Coloca o valor que queres, neste caso, o campo da Base de Dados que queres atribuir. Pedro Martins Não respondo a duvidas por PM
AnaGPSI Posted April 26, 2012 at 11:24 AM Author Report #451556 Posted April 26, 2012 at 11:24 AM Já experimentei assim: DataGridView1.Rows.Add(" select nome from curso", "select sigla from curso") e assim: DataGridView1.Rows.Add(" nome", "curso") e a única coisa que me aparece no datagridview é o que está entre aspas! Help me!
Andrepereira9 Posted April 26, 2012 at 11:54 AM Report #451568 Posted April 26, 2012 at 11:54 AM Boas Da maneira como tens a sintaxe SQL, o resultado vai ser sql = "Select nome, sigla From curso" 'Ele selecciona o nome e depois as siglas leitor.GetValue(0) 'é o que vai conter os nomes leitor.GetValue(1) 'é o que vai conter as siglas Se queres que ele 1º te mostre as siglas, alteras a sintaxe para sql = "Select sigla, nome From curso" 'Ele selecciona as siglas e depois os nomes leitor.GetValue(0) 'é o que vai conter as siglas leitor.GetValue(1) 'é o que vai conter os nomes Ou então, quando mandas os dados para o datagrid, invertes as posições (o que se pode tornar mais confuso) sql = "Select nome, sigla From curso" 'Ele selecciona o nome e depois as siglas DataGridView1.Rows.Add(leitor.GetValue(1), leitor.GetValue(0)) '1º escreve as siglas e depois o nome A informática chegou para resolver problemas que antes não existiam Quem ri por último é porque está conectado a 52 Kbs.
AnaGPSI Posted April 26, 2012 at 02:02 PM Author Report #451585 Posted April 26, 2012 at 02:02 PM O código todo que tenho está bem a excepção da função GetValue me de dá erro! sql = "Select nome, sigla From curso" datagridcurso.GetValue(0) 'é o que vai conter os nomes datagridcurso.GetValue(1) 'é o que vai conter as siglas Diz que 'GetValue' is not a member of 'System.Data.OleDb.OleDbCommand'. Help Me please 🙂
Andrepereira9 Posted April 26, 2012 at 03:49 PM Report #451605 Posted April 26, 2012 at 03:49 PM Dá-te erro, pois não existe esse membro no datagrid. Esse membro .getvalue existe é na variavel "leitor", que é a que tem os dados da pesquisa Para adicionar os dados à datagrid, tens que fazer assim datagridcurso .Rows.Add(leitor.GetValue(0), leitor.GetValue(1)) A informática chegou para resolver problemas que antes não existiam Quem ri por último é porque está conectado a 52 Kbs.
AnaGPSI Posted April 27, 2012 at 10:29 AM Author Report #451733 Posted April 27, 2012 at 10:29 AM Tive que alterar o meu código todo. Bem é o seguinte agora os dados aparecem mas ele cria as colunas sozinho com o nome de cabeçalho igual ao nome do campo da tabela e eu queria que como cabeçalho tivesse a coluna: "Nome do curso (onde colocava os dados que se encontram no campo 'nome' da tabela curso)", "Sigla (onde colocava os dados que se encontram no campo 'sigla' da tabela curso)" e ainda a coluna ("Eliminar (onde teria uma checkbox)". Estou a desmoralizar porque tenho que ter o programa pronto até ao dia 18 do próximo mês e estou muito atrasada Help me please aqui está o código que tenho: Private Sub curso_disciplinas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load TabControl1.SelectedIndex = TabIndexASelecionar 'Conexão com SQL Const constr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\GPSI\Documents\mydb.accdb" Dim mydb As New OleDbConnection(constr) mydb.Open() MsgBox("State: " & mydb.State.ToString(), MsgBoxStyle.Information) 'Minha instrução SQL Dim VlSql As String = "select nome, sigla from curso" Dim da As New OleDbDataAdapter(VlSql, mydb) Dim dt As New Data.DataTable() Dim cmd As New OleDbCommand(VlSql, mydb) Dim datacurso As OleDbDataReader = cmd.ExecuteReader() 'Criando um datatable dt = New DataTable() 'Passando o dados do dataadapter da.Fill(dt) 'Carregando o dados do datatable no DataGridView DataGridView1.DataSource = dt End Sub EDIT: GeSHi adicionado
Caça Posted April 27, 2012 at 11:07 AM Report #451737 Posted April 27, 2012 at 11:07 AM Depois de DataGridView1.DataSource = dt coloca DataGridView1.Columns(0).HeaderText = "Nome do curso" DataGridView1.Columns(1).HeaderText = "Sigla" Pedro Martins Não respondo a duvidas por PM
AnaGPSI Posted April 27, 2012 at 11:35 AM Author Report #451742 Posted April 27, 2012 at 11:35 AM Mas com essas alterações continua a acrescentar as tais duas tabelas, não insere nas colunas que eu criei no form!
AnaGPSI Posted April 27, 2012 at 02:07 PM Author Report #451777 Posted April 27, 2012 at 02:07 PM Alguém me ajude please! 🙂
Caça Posted April 27, 2012 at 02:19 PM Report #451780 Posted April 27, 2012 at 02:19 PM Não está a mudar o texto das duas primeiras colunas? Pedro Martins Não respondo a duvidas por PM
AnaGPSI Posted April 27, 2012 at 02:25 PM Author Report #451783 Posted April 27, 2012 at 02:25 PM O problema é que eu criei uma datagridview com as colunas (Nome do Curso, Sigla, Eliminar) mas o problema é que o código nao me está a introduzir os dados nessas colunas. O código esta a colocar os dados em duas novas colunas criadas por ele com o nome dos atributos da tabela curso da BD ou seja "nome" e "sigla". 🙂
Caça Posted April 27, 2012 at 03:03 PM Report #451786 Posted April 27, 2012 at 03:03 PM Então elimina as colunas que crias-te e mantém o código já com as alterações que te indiquei. Ou então coloca o nome do campo a mostrar no propriedade DataPropertyName da respectiva coluna. Pedro Martins Não respondo a duvidas por PM
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now