Dinhus 0 Denunciar post Postado Setembro 23, 2010 Boa Tarde. Tenho 1 gridView que recebe os dados de um banco de dados logo que é chamada a pagina. Esse gridview possui 3 colunas: Nome.Sobrenome.Cidade. Eu gostaria de fazer uma busca na coluna Sobrenome atraves de uma texto escrito em um textbox. A pessoa iria digitar, por exemplo, "Pe", daí listaria no GridView todos os registros que começa com a palavra "Pe". Mas não somente ela: a intenção era mudar a coluna sobrenome para trazer somente os registros da palavra "Pe" mas as outras colunas, Nome e Cidade, pudessem aparecer. Estou usando um banco simples com poucos registro em Access. Eu tenhu já as variaveis declaradas, como as de comando de conection e tudo mais. So não sei como fazer para listar um certo numero de registro nesse mesmo gridview atraves de um comando SQL. Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Setembro 25, 2010 Pode fazer uma consulta novamente no banco utilizando uma clausula where. Ou quando alimentar a primeira vez sua grid, armazene os dados em um DataTable, depois basta filtrar a partir da sua DataTable. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Dinhus 0 Denunciar post Postado Setembro 25, 2010 Boa Noite quintelab. É o seguinte: eu joguei a clausula mas mesmo assim naum deu certo. Eu não consigo atualizar os dados do gridview. A situacao é assim: o banco de dados se refere a uma Tabela de musicas que possui as colunas "nome_musica" , "genero_musica" tenhu um dropdownlist (ddlGeneroMusica) com 4 opcao: "..." , "Edited" , "Funk" , "Electro" . ai coloquei o seguinte comando no botao do drop: Try If ddlGeneroMusica.SelectedIndex = 0 Then MsgBox("Você precisa Escolher um Gênero", MsgBoxStyle.Information, "Genero") ElseIf ddlGeneroMusica.SelectedIndex = 1 Then gvMusicas.DataSourceID = "" gvMusicas.Dispose() gvMusicas.DataSource = [b]adsGeneroEdited[/b] ElseIf ddlGeneroMusica.SelectedIndex = 2 Then gvMusicas.DataSourceID = "" gvMusicas.Dispose() gvMusicas.DataSource = [b]adsGeneroFunk[/b] Else : ddlGeneroMusica.SelectedIndex = 3 gvMusicas.DataSourceID = "" gvMusicas.Dispose() gvMusicas.DataSource = [b]adsGeneroElectro[/b] End If Catch ex As Exception MsgBox(ex) End Try os ads são os AccessDataSource que possui, cada um, um Select para selecionar o genero da musica la no banco de dados no campo "genero_musica". mesmo eu criando um ADS para cada Select, ele naum funciona. Ai tentei usar select separado em textbox para testar: Sub CarregaNome() Dim strProcura As String strProcura = txtProcura.Text Try conexao.Open() strSQLConsulta = "SELECT nome_musica, genero_musica " _ & "FROM musicas " _ & "WHERE genero_musica LIKE '%" & Replace(strProcura, "'", "''") & "%' " _ & "ORDER BY genero_musica;" cmd = New OleDbCommand(strSQLConsulta, conexao) cmd.ExecuteNonQuery() adap = New OleDbDataAdapter(cmd) ds = New DataSet adap.Fill(ds) gvMusicas.DataSource = adap gvMusicas.DataBind() conexao.Close() Catch ex As Exception MsgBox(ex) End Try End Sub ai ele da um erro: O argumento 'Prompt' não pode ser convertido no tipo 'String'. Ou seja: eu quero apenas fazer uma busca de genero no banco para trazer somente os dados referente àquele genero e não to conseguindo. Espero respostas. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Setembro 26, 2010 Em qual linha ocorre o erro? Já testou esta query no banco: "SELECT nome_musica, genero_musica FROM musicas WHERE genero_musica LIKE '%" & Replace(strProcura, "'", "''") & "%' ORDER BY genero_musica;" ?? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Dinhus 0 Denunciar post Postado Setembro 27, 2010 Bom Dia quintelab. Falando do primeiro bloco de codigo que te mandei: Já sim. Eu criei um outro gridview que recebia essa instrução SQL e ele me trazia corretamente os dados do banco cujo genero tivesse o mesmo nome do Index do drop. O meu problema é que não to conseguindo fazer com que o gvMusicas atualize sempre. Quando eo carrego a pagina, o gvMusicas vem com o padrão: todas as musicas, todos os generos. Quando eo vo la no drop e mudo a opcao e clico em bsucar, ele até muda pro genero selecionado. Mas depois que mudou, ele não muda mais. Você trocar quantas vezes quiser a busca que o gvMusicas não muda mais os dados. Falando do segundo bloco: Eu consegui tratar aquele erro que estava dando ( O argumento 'Prompt' não pode ser convertido no tipo 'String'. ) O erro que dá, quando eu clico no botão Procurar do txtProcura, é o seguinte: "O tipo da fonte de dados é invalido. Ele deve ser um IListSource, IEnumerable ou IDataSource" Mesmo tratando o erro, não entendi o que quiz dizer com esse erro. Qualquer dúvida, me avisa que mando de outra forma. Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Setembro 28, 2010 O que tem no evento do seu botão? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Dinhus 0 Denunciar post Postado Setembro 28, 2010 Boa Tarde. Tenho 2 botões: o que procura via DROP e o que procura via TXT. O que tá dando erro é o do TXT que tem a seguinte linha de comando: Protected Sub btnProcurar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnProcurar.Click CarregaNome() End Sub Sub CarregaNome() Dim strProcura As String strProcura = txtProcura.Text Try conexao.Open() strSQLConsulta = "SELECT nome_musica, genero_musica " _ & "FROM musicas " _ & "WHERE nome_musica LIKE '%" & Replace(strProcura, "'", "''") & "%' " _ & "ORDER BY nome_musica;" cmd = New OleDbCommand(strSQLConsulta, conexao) cmd.ExecuteNonQuery() adap = New OleDbDataAdapter(cmd) ds = New DataSet adap.Fill(ds) gvMusicas.DataSource = adap conexao.Close() Catch ex As Exception MsgBox(ex.ToString) End Try End Sub O botão do DROP tem aquele comando que passei la em cima ( 1º código ) Só achei estranho o seguinte: porque que eu consigo carregar o gvMusicas com qualquer um daqueles ADS na primeira vez, tipo, se eu escolher no DROP o adsGeneroFunk, por exemplo, pela primera vez, ele muda e carrega no gvMusicas so as musicas referentes ao Funk do banco de dados. Mas ai tento mudar o genero e ele não muda mais =[ Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Setembro 29, 2010 Ta dificil de entender, você tem dois botões para fazer a pesquisa? Um da certo e outro não? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Dinhus 0 Denunciar post Postado Setembro 29, 2010 Boa tarde. Bom, os códigos você já tem todos ai. Vou explicar como está dispostos os botões na aplicação: Tenho uma guia chamada BUSCA AVANÇADA e nela: tenho um txtProcura com um btnProcurar logo abaixo dele. Serve para que a pessoa possa buscar uma musica no banco de dados pelo nome da musica; tenho um ddlGeneroMusica que possui 3 generos de musicas com um btnBuscar logo abaixo dele. Serve para que a pessoa possa buscar uma musica no banco de dados pelo genero da musica. Tenho por fim, no meio da tela, um gridview chamado gvMusicas Certo? Até ai creio que já entendeu a disposição dos controles. Agora vamos aos erros: 1º quando eu coloco uma letra qualquer no txtProcura e clico no botão referente, o btnProcurar, ele dá o seguinte erro: "O tipo de dados da fonte é inválido. Ele deve ser um IListSource, IEnumerable ou IDataSource." O código que está do btnProcurar é o seguinte: Protected Sub btnProcurar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnProcurar.Click CarregaNome() End Sub Sub CarregaNome() Dim strProcura As String strProcura = txtProcura.Text Try conexao.Open() strSQLConsulta = "SELECT nome_musica, genero_musica " _ & "FROM musicas " _ & "WHERE nome_musica LIKE '%" & Replace(strProcura, "'", "''") & "%' " _ & "ORDER BY nome_musica;" cmd = New OleDbCommand(strSQLConsulta, conexao) cmd.ExecuteNonQuery() adap = New OleDbDataAdapter(cmd) ds = New DataSet adap.Fill(ds) gvMusicas.DataSource = adap conexao.Close() Catch ex As Exception MsgBox(ex.ToString) End Try End Sub 2º quando eu seleciono um genero do dropdownlist, ddlGeneroMusica, e clico pela primeira vez no btnBuscar, ele vai no banco, pega o genero referente ao escolhido no ddlGeneroMusica e exibe no gvMusicas. Até ai tudo bem. Ai se você for la no ddlGeneroMusica e escolher outro genero, o gvMusicas não troca mais de informação. Você pode escolher qualquer outro genero que ele não muda as informações que ele trouxe da primeira vez quando deu certo a busca no banco. Exemplo: cliquei no genero "FUNK". O gridview vai e traz todas as musicas do genero "FUNK". Ai depois voce quer escolher o genero "Electro". Você escolhe clica em buscar mais o gridview continua mostrando o genero "FUNK". Não importa qual genero eu escolha: ele só vai trazer certo a primeira escolha que eu fiz. Pensando que poderia ser o accessdatasource, pq eu estava a usar um só para tudo, criei 3 accessdatasource. Um para cada genero com suas strings ja preparadas para a busca no banco. Mas mesmo eu colocando para o gridview mudar o datasource, ele não carrega certo, além da primeira vez. Segue abaixo o código que está no botão btnBuscar que é o btn do drop: Protected Sub btnBuscar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnBuscar.Click Try If ddlGeneroMusica.SelectedIndex = 0 Then MsgBox("Você precisa Escolher um Gênero", MsgBoxStyle.Information, "Genero") ElseIf ddlGeneroMusica.SelectedIndex = 1 Then gvMusicas.DataSourceID = "" gvMusicas.Dispose() gvMusicas.DataSource = adsGeneroEdited ElseIf ddlGeneroMusica.SelectedIndex = 2 Then gvMusicas.DataSourceID = "" gvMusicas.Dispose() gvMusicas.DataSource = adsGeneroFunk Else : ddlGeneroMusica.SelectedIndex = 3 gvMusicas.DataSourceID = "" gvMusicas.Dispose() gvMusicas.DataSource = adsGeneroElectro End If Catch ex As Exception MsgBox(ex) End Try End Sub Cada ADS ali especificado, tem uma instrução de SQL já imbutido. Por exemplo: o adsGeneroElectro está assim: SELECT [nome_musica], [genero_musica], [musica_rar] FROM [musicas] WHERE ([genero_musica] = "Electro"). A pagina já carrega com os accessdatasource fazendo a busca no banco. Tanto é que, dá primeira vez que mostra no gridview, ele funciona. O problema é que só consegue fazer certo a primeira busca, como informado acima. O código ali so ta servindo para mudar o datasource do gvMusicas. Mais nada. E mesmo assim não vai. Desculpa ficar enxendo suas paciencia. É qua ta complicado isso. Espero que agora tenha ficado mais claro. Qualquer problema, eu posto dinovo. Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Outubro 2, 2010 Seus códigos não estão muito ok, vamos por partes. O primeiro erro, troque seu código para este e teste: Sub CarregaNome() Dim strProcura As String strProcura = txtProcura.Text Try strSQLConsulta = "SELECT nome_musica, genero_musica " _ & "FROM musicas " _ & "WHERE nome_musica LIKE '%" & Replace(strProcura, "'", "''") & "%' " _ & "ORDER BY nome_musica;" conexao.Open() 'Levando em consideração que seu objeto conexao já exista e esta instanciado Dim ds As New DataSet adap = New OleDbDataAdapter(strSQLConsulta, conexao) adap.Fill(ds, "dados") adap.Dispose() conexao.Close() gvMusicas.DataSource = ds.Tables("dados").DefaultView gv.DataBind() Catch ex As Exception MsgBox(ex.ToString) End Try End Sub Teste e veja se deu certo, estou achando que pode ter erro na sua consulta sql tbm. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites