mpix Posted January 25, 2007 at 11:58 AM Report #78467 Posted January 25, 2007 at 11:58 AM Embora tenha aberto um tópico a uns dias atrás achei melhor abrir um novo para facilitar a pesquisa para muitos (porque estas duvidas não devem só ser minhas) 😛 Na minha aplicação estou a fazer um Select a base de dados e devolvo os dados para um DataReader (pelo que li é mais rápido e poupo recursos) porque quero apenas mostrar os dados numa DataGridView. Para filtrar os dados para a datagridview vou ter uma combobox com duas hipóteses para pesquisa (nome, BI) , uma textBox (para meter o texto de pesquisa) e um botao de pesquisa. Public Class Aluno ' Declaração Private cnn As New SqlConnection Private cmd As New SqlCommand Private strSQL As String Private Sub btnPesquisar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPesquisar.Click Try strSQL = "SELECT * FROM Alunos" cnn = New SqlConnection(My.Settings.AlunoConnectionString) cnn.Open() cmd = New SqlCommand(strSQL, cnn) ' cria um DataReader com o nome de sdr Dim sdr As SqlDataReader = cmd.ExecuteReader cmd.CommandType = CommandType.Text cmd.Connection = cnn Dim intCol As Integer With sdr 'se há linhas no datareader então executa o código If .HasRows Then DataGridView1.Rows.Clear() For intCol = 1 To .FieldCount - 1 'Inclui uma definição para a coluna: CampoNome, e ColunaNome DataGridView1.Columns.Add(.GetName(intCol), .GetName(intCol)) Next 'Define a largura da coluna com base na largura do cabeçalho DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader 'percorre o datareader enquanto houver dados While .Read 'Obtem os dados como num objeto array Dim objCelulas(intCol) As Object .GetValues(objCelulas) 'Inclui uma linha de cada vez no datagridview DataGridView1.Rows.Add(objCelulas) End While End If ' fecha a conexão do datareader .Close() End With Catch ex As Exception MsgBox(ex.Message) Finally If Not IsNothing(cnn) Then cnn.Close() End If End Try End Sub O meu problema é que cada vez que clico no botão pesquisar não me esta a limpar a DataGridView e fico com colunas repetidas 😄 DataGridView1.Rows.Clear() não está a resultar Alguém me pode ajudar 1 abraço. 😉
SoulOnFire Posted January 25, 2007 at 03:13 PM Report #78516 Posted January 25, 2007 at 03:13 PM Embora tenha aberto um tópico a uns dias atrás achei melhor abrir um novo para facilitar a pesquisa para muitos (porque estas duvidas não devem só ser minhas) 😄 Na minha aplicação estou a fazer um Select a base de dados e devolvo os dados para um DataReader (pelo que li é mais rápido e poupo recursos) porque quero apenas mostrar os dados numa DataGridView. Para filtrar os dados para a datagridview vou ter uma combobox com duas hipóteses para pesquisa (nome, BI) , uma textBox (para meter o texto de pesquisa) e um botao de pesquisa. Public Class Aluno ' Declaração Private cnn As New SqlConnection Private cmd As New SqlCommand Private strSQL As String Private Sub btnPesquisar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPesquisar.Click Try strSQL = "SELECT * FROM Alunos" cnn = New SqlConnection(My.Settings.AlunoConnectionString) cnn.Open() cmd = New SqlCommand(strSQL, cnn) ' cria um DataReader com o nome de sdr Dim sdr As SqlDataReader = cmd.ExecuteReader cmd.CommandType = CommandType.Text cmd.Connection = cnn Dim intCol As Integer With sdr 'se há linhas no datareader então executa o código If .HasRows Then DataGridView1.Rows.Clear() For intCol = 1 To .FieldCount - 1 'Inclui uma definição para a coluna: CampoNome, e ColunaNome DataGridView1.Columns.Add(.GetName(intCol), .GetName(intCol)) Next 'Define a largura da coluna com base na largura do cabeçalho DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader 'percorre o datareader enquanto houver dados While .Read 'Obtem os dados como num objeto array Dim objCelulas(intCol) As Object .GetValues(objCelulas) 'Inclui uma linha de cada vez no datagridview DataGridView1.Rows.Add(objCelulas) End While End If ' fecha a conexão do datareader .Close() End With Catch ex As Exception MsgBox(ex.Message) Finally If Not IsNothing(cnn) Then cnn.Close() End If End Try End Sub O meu problema é que cada vez que clico no botão pesquisar não me esta a limpar a DataGridView e fico com colunas repetidas 😄 DataGridView1.Rows.Clear() não está a resultar Alguém me pode ajudar 1 abraço. 😉 Pois n admira que fiques com colunas repetidas visto que de cada vez estas a adicionar mais colunas para alem de datagridview.rows.clear() tens k usar o datagridview.columns.clear() 😛 Fikem Bem!!!Miguel Duarte - (SoulOnFire)O meu BLOG - XAML E WPF - http://wpfpt.wordpress.com/
Asgorath Posted January 25, 2007 at 03:21 PM Report #78521 Posted January 25, 2007 at 03:21 PM Boas Experimenta assim ver se funciona Public Class Aluno ' Declaração Private cnn As New SqlConnection Private cmd As New SqlCommand Private strSQL As String Private Sub btnPesquisar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPesquisar.Click Try strSQL = "SELECT * FROM Alunos" cnn = New SqlConnection(My.Settings.AlunoConnectionString) cnn.Open() cmd = New SqlCommand() ' cria um DataReader com o nome de sdr cmd.Connection = cnn cmd.CommandType = CommandType.Text cmd.CommandText = strSQL Dim sdr As SqlDataReader = cmd.ExecuteReader Dim intCol As Integer With sdr 'se há linhas no datareader então executa o código If .HasRows Then DataGridView1.Rows.Clear() For intCol = 1 To .FieldCount - 1 'Inclui uma definição para a coluna: CampoNome, e ColunaNome DataGridView1.Columns.Add(.GetName(intCol), .GetName(intCol)) Next 'Define a largura da coluna com base na largura do cabeçalho DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader 'percorre o datareader enquanto houver dados While .Read 'Obtem os dados como num objeto array Dim objCelulas(intCol) As Object .GetValues(objCelulas) 'Inclui uma linha de cada vez no datagridview DataGridView1.Rows.Add(objCelulas) End While End If ' fecha a conexão do datareader .Close() End With Catch ex As Exception MsgBox(ex.Message) Finally If Not IsNothing(cnn) Then cnn.Close() End If End Try End Sub "The Dark Side Clouds Everthing. Impossible To See The Future Is."My rig: Intel Core 2 Quad Q9450 | abit IP35P | 4G Kingston 800 Mhz | XFX GeForce 9800 GX2 1G ddr3 | 2X WD5000AAJS 500Gb Sata 2 | PSU 600W || Caixa El-Diablo | Creative XMod
mpix Posted January 25, 2007 at 05:21 PM Author Report #78548 Posted January 25, 2007 at 05:21 PM Pois n admira que fiques com colunas repetidas visto que de cada vez estas a adicionar mais colunas para alem de datagridview.rows.clear() tens que usar o datagridview.columns.clear() 😉 É mesmo isso 😁 Boas Experimenta assim ver se funciona Mudaste mais alguma coisa tirando a linha? Dim sdr As SqlDataReader = cmd.ExecuteReader Já agora Qual a melhor maneira de mudar o nome das colunas? Eu fiz assim? DataGridView1.Columns.Add(.GetName(0), "Numero Aluno") DataGridView1.Columns.Add(.GetName(1), "Curso") DataGridView1.Columns.Add(.GetName(2), "Nome ") DataGridView1.Columns.Add(.GetName(3), "Morada") 1 abraço;)
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