Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
rjsma

consultar os dados na bd access

Recommended Posts

rjsma

boas

tenho andado a fazer umas pesquisa pelo o google e tambem aqui no forum haver se consigo compreender como consigo fazer fazer uma consulta numa bd access (pesquisa).No google não encontrei assim nada que me podesse ajudar e aqui no portugal-a-programar encontrei isto  http://wiki.portugal-a-programar.org/visual_basic_.net:gestao_bases_dados_access

Penso que eu precisava era de usar o metodo .ExecuteReader mas como não fiz a ligação ao vb por via codigo mas sim por wizards penso que terei de fazer de outra maneira(por wizard), estou certo?

abraço

:D

Share this post


Link to post
Share on other sites
bioshock

O .ExecuteReader serve para verificar se existem "linhas" na BD, se existe informação na BD. Caso exista informação ele faz os procedimentos, caso contrário Error!

O .ExecuteReader é muito usado para Logins via BD, não sei se era a isso que te estavas a referir, mas se é, tens obrigatoriamente que fazer unha-a-unha.

Código do .ExecuteReader:

        Dim reader As OleDbDataReader = Command.ExecuteReader()
        ' Caso existam registos;
        If reader.HasRows Then
            ' Fez login com sucesso!;
            MessageBox.Show("Fez login com sucesso!", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Information)
        Else
            ' Caso os dados inseridos nas textboxs estejam incorrectos;
            MessageBox.Show("Dados incorrectos, volte a tentar.", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If

Share this post


Link to post
Share on other sites
rjsma

eu não queria fazer um sistema de login, isso eu sei fazer, a minha duvida é ao criar um tipo de motor de buscar para que possa fazer pesquisa dos dados armazenados na bd, pensava que tinha de usar uma coisa do tipo executereader mas parece que não.Como fiz a ligacao a bd por wizards deve tambem ser por ai que crio as consultas

Share this post


Link to post
Share on other sites
rjsma

Criei uma query agora penso que tenho de associar a query ao botao de pesquisa ou uma coisa parecida utilizando o codigo sql que me deu

SELECT Id_animal, Nome_animal, descrição, imagem FROM animal

não se se estou a fazer as coisas como deve ser

Share this post


Link to post
Share on other sites
jpaulino

O .ExecuteReader serve para verificar se existem "linhas" na BD, se existe informação na BD. Caso exista informação ele faz os procedimentos, caso contrário Error!

O .ExecuteReader é muito usado para Logins via BD, não sei se era a isso que te estavas a referir, mas se é, tens obrigatoriamente que fazer unha-a-unha.

Errado!

O método .ExecuteReader() serve para retornar registos da base de dados e não para verificar se existem registos ... não dá erro, apenas não retorna nada. Pelo menos foi o que entendi na tua explicação.

Para um login, e caso não se precise de retornar nada (por exemplo o nome, nivel de acesso, etc), como no teu exemplo, utiliza-se um ExecuteNonQuery() porque é mais rápido a executar (adaptando a query é claro).

Ah, tens de fazer pelos TablesAdapters as queries.

Aqui sim :D Se precisares de mostrar os dados, podes utilizar um OleDbDataAdapter!

Share this post


Link to post
Share on other sites
bioshock

Criei uma query agora penso que tenho de associar a query ao botao de pesquisa ou uma coisa parecida utilizando o codigo sql que me deu

SELECT Id_animal, Nome_animal, descrição, imagem FROM animal

não se se estou a fazer as coisas como deve ser

Criaste a query por onde? Pelo TableAdapter? Se sim, tens é de especificar a textbox (que é onde vais escrever a informação que desejas procurar na BD), algo como:

SELECT  Id_animal, Nome_animal, descrição, imagem FROM Tabela WHERE campo LIKE '%NomeDaTextBox%'

  » Penso que seja isto!

Errado!

O método .ExecuteReader() serve para retornar registos da base de dados e não para verificar se existem registos ... não dá erro, apenas não retorna nada. Pelo menos foi o que entendi na tua explicação.

Para um login, e caso não se precise de retornar nada (por exemplo o nome, nivel de acesso, etc), como no teu exemplo, utiliza-se um ExecuteNonQuery() porque é mais rápido a executar (adaptando a query é claro).

Aqui sim :) Se precisares de mostrar os dados, podes utilizar um OleDbDataAdapter!

Expliquei-me mal, não era essa a informação que eu queria transmitir. Quando disse "Error" não era propriamente a dizer que dava erro, peço desculpa  :D

Share this post


Link to post
Share on other sites
rjsma

sim fiz pelo tableadapter, ponho o codigo sql dentro da query?mas se eu nao quiser por todos os dados na mesma textbox mas sim em varios, como por exemplo, nome do animal na textbox 1, descrição na textbox2, imagem na picturebox, etc, não seria dessa maneira pois não?

Share this post


Link to post
Share on other sites
bioshock

SELECT  Id_animal, Nome_animal, descrição, imagem FROM Tabela WHERE campo LIKE '%NomeDaTextBox%'

Convém estudares um pouco sobre queries. Procura manuais no google ou algo do género, senão não vais lá.

Neste SELECT, estamos a seleccionar os campos: Id_animal, Nome_animal, descrição, imagem, FROM Tabela (Neste caso alteras Tabela para o nome da tabela onde estão estes campos) WHERE campo (alteras o campo para o nome do campo que desejas procurar na textbox, por exemplo: WHERE Nome_animal) LIKE %NomeDaTextBox%' ( igual ao que foi digitado na textbox); Esta query, se estiver bem feita, será adicionada na aplicação. Depois basta copiares o código e meteres no botão "pesquisar".

Feito isto, tens que fazer uma query para cada procura na BD que queiras fazer.

EDIT: Vê este exemplo: http://www.macoratti.net/vbn_foan.htm

Share this post


Link to post
Share on other sites
jpaulino

Expliquei-me mal, não era essa a informação que eu queria transmitir. Quando disse "Error" não era propriamente a dizer que dava erro, peço desculpa  :)

Não tens de pedir desculpa ... estás a tentar ajudar :D

É preciso é ter cuidado como se explica para não causas confusão!

Share this post


Link to post
Share on other sites
bioshock

Não tens de pedir desculpa ... estás a tentar ajudar :)

É preciso é ter cuidado como se explica para não causas confusão!

Vou ter mais cuidado para a próxima  :D

Share this post


Link to post
Share on other sites
rjsma

SELECT  Id_animal, Nome_animal, descrição, imagem FROM Tabela WHERE campo LIKE '%NomeDaTextBox%'

Convém estudares um pouco sobre queries. Procura manuais no google ou algo do género, senão não vais lá.

Neste SELECT, estamos a seleccionar os campos: Id_animal, Nome_animal, descrição, imagem, FROM Tabela (Neste caso alteras Tabela para o nome da tabela onde estão estes campos) WHERE campo (alteras o campo para o nome do campo que desejas procurar na textbox, por exemplo: WHERE Nome_animal) LIKE %NomeDaTextBox%' ( igual ao que foi digitado na textbox); Esta query, se estiver bem feita, será adicionada na aplicação. Depois basta copiares o código e meteres no botão "pesquisar".

Feito isto, tens que fazer uma query para cada procura na BD que queiras fazer.

EDIT: Vê este exemplo: http://www.macoratti.net/vbn_foan.htm

eu compreendo o codigo sql, eu no ano passado nas aulas dei 2 meses de mysql, não estava era a compreender bem a utilização das query, penso ja percebi

fazo uma query para cada um dos campos e depois coloco o codigo no botão de pesquisa

SELECT  Id_animal, Nome_animal, descrição, imagem FROM animal WHERE descrição LIKE '%textbox1%'

SELECT  Id_animal, Nome_animal, descrição, imagem FROM animal WHERE nome_animal LIKE '%textbox2%'

é desta maneira?

Share this post


Link to post
Share on other sites
rjsma

ja fiz as querys todas so estou com um problema em por o codigo a rular

        SELECT  Nome_animal, descrição, imagem FROM animal WHERE descrição LIKE '%textbox1%'
        End Select
        Select Nome_animal, descrição, imagem FROM animal WHERE nome_animal LIKE '%textbox2%'
        End Select

penso que so seja necessário isto, não é?

Share this post


Link to post
Share on other sites
bioshock

Lê o meu post anterior.

Já agora, estás a fazer as queries mesmo no tableAdapter não estás?

Share this post


Link to post
Share on other sites
bioshock

Bem, fui ver uma aplicação antiga que eu tinha e lá fiz de forma diferente, experimenta isto:

Escolhe o TableAdapter;

http://img88.imageshack.us/i/imagem1n.jpg/

Faz a selecção dos dados, e mete igual à imagem;

http://img695.imageshack.us/i/imagem2y.jpg/

No topo, é criado o FillBy, clicas no botão, e deve-te aparecer algo idêntico:

http://img337.imageshack.us/i/imagem3o.jpg/

Private Sub FillBy4ToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FillBy4ToolStripButton.Click
        Try
            Me.TAlunosTableAdapter.FillBy4(Me.BasedeDadosDataSet.TAlunos, New System.Nullable(Of Integer)(CType(NrAlunosToolStripTextBox.Text, Integer)))
        Catch ex As System.Exception
            System.Windows.Forms.MessageBox.Show(ex.Message)
        End Try

    End Sub

Trocas a linha "NrAlunosToolStripTextBox.Text" pela tua Textbox de pesquisa, e metes o código num botão.

Edit: Enganei-me na ordem das imagens, agora já está correcto.

Share this post


Link to post
Share on other sites
rjsma

vou ter de criar uma query para cada campo e o vou ter de por esse codigo para cada query

Share this post


Link to post
Share on other sites
bioshock

Tu tens de fazer as queries para cada pesquisa que queiras fazer, nada mais. Se só queres fazer uma pesquisa, fazes só uma query.

Share this post


Link to post
Share on other sites
bioshock

Já compreendi tudinho

obrigado bioshock pela a paciencia que tiveste  :D

De nada. Qualquer coisa apita.

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
Sign in to follow this  

×

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.