Jump to content

Recommended Posts

Posted

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

Posted

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.

Posted

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

Posted

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!

Posted

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.

Posted

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  🙂

Posted

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.

Posted

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  :wallbash:

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

Posted

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

Posted

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".

🙂

Posted

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.