Jump to content
whize13

[Resolvido] Como adicionar uma coluna no DataGridView

Recommended Posts

whize13

Como é que posso adicionar uma nova coluna fornecida pelo access, o objectivo é quando a checkbox esta selecionada a coluna aperece e se nao selecionada desaparece eu tenho o seguinte codigo mas não dá

Private Sub CBEmail_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CBEmail.CheckedChanged
 If CBCarta.Checked Then
	 Dim da As OleDb.OleDbDataAdapter
	 Dim dt As New DataTable
	 Dim ds As New DataSet
	 ds.Tables.Add(dt)
	 da = New OleDb.OleDbDataAdapter("SELECT Clube.N_Socio, DadosPessoais.Nome, BI_CC.BI_CC, DadosPessoais.DataNasc, Morada.Cod_Postal, Morada.Moradas, DadosPessoais.Telefone, DadosPessoais.Telemovel, DadosCarta.CartaCondução, Clube.Data_Fidel, DadosPessoais.Estado FROM (DadosProp INNER JOIN Prop ON DadosProp.N_SocioProp = Prop.N_SocioProp) INNER JOIN (Morada INNER JOIN (((BI_CC INNER JOIN DadosPessoais ON BI_CC.BI_CC = DadosPessoais.BI_CC) INNER JOIN (DadosCarta INNER JOIN Carta ON DadosCarta.CartaCondução = Carta.CartaCondução) ON DadosPessoais.NIF = Carta.NIF) INNER JOIN Clube ON DadosPessoais.NIF = Clube.NIF) ON Morada.Cod_Postal = DadosPessoais.Cod_Postal) ON Prop.N_Socio = Clube.N_Socio", cn)
	 DataGridView1.Columns.Add = da.Fill(dt)
	 DataGridView1.Columns(9).Visible = True
 Else
	 DataGridView1.Columns(9).Visible = False
 End If
End Sub

Share this post


Link to post
Share on other sites
HQuintas

Penso que tem que carregar o controlo DataGridView novamente


ELSE
DataGridView1.DataSource = ds.Tables("Tabela") ' Ou  DataGridView1.Columns.Add = da.Fill(dt)
DataGridView1.Columns(9).Visible = False

Edited by HQuintas

Share this post


Link to post
Share on other sites
nelsonr

Mas quando a checkbox for false não é para fazer o select? ou faz na mesma mas esconde uma coluna?

Share this post


Link to post
Share on other sites
whize13

Quando está a true "carrega" para o DataGridView a coluna respectiva ao dado selecionado na CheckBox quando tiver a false apenas esconde

a coluna

Share this post


Link to post
Share on other sites
nelsonr

E porque não fazes sempre a parte de preencher a grelha, independentemente da checkbox e no fim fazes algo assim?

 DataGridView1.Columns(9).Visible = CBCarta.Checked

Share this post


Link to post
Share on other sites
whize13

Ok ja adaptei o meu codigo, a minha duvida é como é que sei qual será o numero da nova tabela inserida, e dá me o seguinte erro: "Palavra-chave não suportada: 'provider'."

If CBCarta.Checked Then
	    Dim da As SqlDataAdapter
	    Dim ds As DataSet
	    Dim myConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ \RegistoAutomovel(Estagio)\bd2.mdb"
	    Dim connection As New SqlConnection(myConnectionString)
	    Dim SQL As String = "SELECT Email FROM DadosPessoais "
	    da = New SqlDataAdapter(SQL, connection)
	    ds = New DataSet
	    da.Fill(ds, "DadosPessoais")
	    Me.DataGridView1.DataSource = ds.Tables("DadosPessoais")
	    DataGridView1.Columns(Como sei que numero por aqui).Visible = True
    Else
	    DataGridView1.Columns(Como sei que numero por aqui).Visible = False
    End If

mas eu acho que devia estar a usar um add columagora como naop sei

Share this post


Link to post
Share on other sites
HQuintas

Dim da As SqlDataAdapter
Dim ds As DataSet
Dim myConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ \RegistoAutomovel(Estagio)\bd2.mdb"
Dim connection As New SqlConnection(myConnectionString)
Dim SQL As String = "SELECT Email,Nome FROM DadosPessoais "
da = New SqlDataAdapter(SQL, connection)
ds = New DataSet
da.Fill(ds, "DadosPessoais")
If CBCarta.Checked Then
	Me.DataGridView1.DataSource = ds.Tables("DadosPessoais")
	DataGridView1.Columns(1).Visible = True
Else
	Me.DataGridView1.DataSource = ds.Tables("DadosPessoais")
	DataGridView1.Columns(1).Visible = False
End If

Verifica o caminho da base de dados.

Por exemplo queres esconder o a coluna Nome, DataGridView1.Columns(1).Visible = False

Share this post


Link to post
Share on other sites
whize13

já resolvi o problema, carrego todos as paginas e meto logo as colunas que desejo escondidas e depois trabalho com o chackedchange e siga,

mas mais uma vez obrigado pela ajuda e disponibilidade de todos

Share this post


Link to post
Share on other sites
whize13

Ui agora pensei que isto ia resolver tudo, e quase, mas as tabelas pertencentes as colunas 5 6 7 e 9 não ficam omitidas no DataGridView nao sei porque

 Private Sub DatagridShow()
    Dim da As OleDb.OleDbDataAdapter
    Dim dt As New DataTable
    Dim ds As New DataSet
    ds.Tables.Add(dt)
    'Preenche as colunas
    da = New OleDb.OleDbDataAdapter("SELECT DadosSocio.N_Socio, DadosPessoais.Nome, DadosPessoais.BI_CC, Morada.Cod_Postal, Morada.Moradas, Morada.Pais, Morada.Distrito, Morada.Localidade, DadosPessoais.DataNasc, DadosPessoais.LocalNasc, DadosPessoais.Telefone, DadosPessoais.Telemovel, DadosPessoais.Email, DadosPessoais.Site, DadosCarta.CartaCondução, DadosCarta.Data, DadosCarta.[Local], DadosSocio.DataFidel, DadosSocio.Anual, DadosSocio.[1Semestre], DadosSocio.[2Semestre], DadosSocio.N_SocioProp, DadosSocio.SocioPro, DadosSocio.Estado FROM Morada INNER JOIN (DadosSocio INNER JOIN (((BI_CC INNER JOIN DadosPessoais ON BI_CC.BI_CC = DadosPessoais.BI_CC) INNER JOIN (DadosCarta INNER JOIN Carta ON DadosCarta.CartaCondução = Carta.CartaCondução) ON DadosPessoais.NIF = Carta.NIF) INNER JOIN Clube ON DadosPessoais.NIF = Clube.NIF) ON DadosSocio.N_Socio = Clube.N_Socio) ON Morada.Cod_Postal = DadosPessoais.Cod_Postal", cn)
    da.Fill(dt)
    Me.DataGridView1.DataSource = dt.DefaultView
    DataGridView1.Columns(5).Visible = False
    DataGridView1.Columns(6).Visible = False
    DataGridView1.Columns(7).Visible = False
    DataGridView1.Columns(9).Visible = False
    DataGridView1.Columns(12).Visible = False
    DataGridView1.Columns(13).Visible = False
    DataGridView1.Columns(15).Visible = False
    DataGridView1.Columns(16).Visible = False
    DataGridView1.Columns(18).Visible = False
    DataGridView1.Columns(19).Visible = False
    DataGridView1.Columns(20).Visible = False
    DataGridView1.Columns(21).Visible = False
    DataGridView1.Columns(22).Visible = False
    cn.Close()

Share this post


Link to post
Share on other sites

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.