Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

jmourao

Procurar informação(BD) em VB.net

Mensagens Recomendadas

jmourao

boa noite!

estou de momento a fazer um projecto e cheguei a uma parte em  que preciso de alguma informação/auxilio

o meu programa é sobre carros/automobilistas/multas, tendo as tabelas preenchidas, o passo seguinte é procurar informação na base de dados(Access 2003).

o meu objectivo é que a pesquisa possa ter mais do que um critério(ex. quero pesquisar um carro, sei que a cor é "azul" e que o modelo é "corsa" e os outros possíveis campos deixo em branco), com o objectivo que mostre todos os elementos de cor "azul" e que o modelo seja "corsa"...

aqui chego ao meu problema, essencialmente o que eu queria era uma maneira de inserir um comando SQL(ou algo do género "SELECT Matricula,Marca,Modelo From Automóvel Where modelo="corsa" AND cor="azul")

já andei a ver alguns vídeos e documentos mas não consegui aproveitar muito

Agradeço toda a ajuda(tou com uma duvida na data source mas já pergunto de seguida se vir que é como penso)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Podes fazer exactamente isso, concatenar o comando.

Também podes aplicar filtros sucessivos, por exemplo a uma datatable.

Aplicas um filtro para modelo="corsa" e depois ao resultado aplicas o filtro para cor="azul".

Como estás a chupar os dados para a aplicação?


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

O melhor mesmo é ele fazer querys. E nessas querys, não tem obrigatoriamente que especificar quais os dados a procurar. Pode muito bem procurar pela cor que o utilizador inseriu na textbox de pesquisa.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jmourao

peço desculpa por não ter aparecido mais cedo mas tenho estado ocupado

chupar?(não tou a ver o que queres bem com isso) mas a ver se consigo acertar...a bd tá em access 2003, com o wizard do vb puxei-a para a exibir numa data grid view...espero que seja uma coisa dessas xD

aplicar filtros sucessivos não estou a ver como é que , pretendem(sou um iniciado nisto XD)

mas tive a ver codigo  e adaptei para o meu, mas não está a funcionar não sei bem porque

----------------------------------------------------------------------------------------------------------------------------------

(aqui é um botão de procurar)

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_ProcAuto.Click
        DataGridViewAuto.DataSource = valprocaut()
    End Sub

--------------------------------------------------------------------------------------------------------------------------------------

(função mas dá erro)

    Function valprocaut()

        Dim table As New DataTable

        Try
        Dim DBconnection As New OleDbConnection(constr)
        DBconnection.Open()
        Dim varprocaut As String
        varprocaut = "SELECT matricula,marca,modelo FROM automovel WHERE automovel.matricula='" & MaskedTextBox_Matricula.Text & "';"

        Dim cmd As New OleDbCommand(varprocaut, DBconnection)
        Dim adapt As OleDbDataAdapter
        Dim drdel As OleDbDataReader

        adapt = New OleDbDataAdapter(cmd)
        drdel = cmd.ExecuteReader

        adapt.Fill(table)        <-------------o erro é aqui, diz "já existe um DataReader aberto e associado a este comando, que tem que ser fechado primeiro"

        Catch ex As Exception
        MsgBox(ex.Message)
        End Try
        Return table
    End Function

---------------------------------------------------------------------------------------------------------------------------

o objectivo é com os valores que o utilizador introduz(neste caso ainda só programei ainda a matricula...depois tinha que inventar um ciclo if grandote(ou alguma sugestão xD que eu só conheço os caminhos mais longos)), preencher uma data grid view com essa informação

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Não precisas nada disso.

Se estás a fazer pelos wizards, automaticamente são criados tablesAdapters assim como BindingsSources.

No form onde puseste a datagrid, em baixo deve ter lá algo do género "ClientesTableAdapter", clicas lá e clicas em "Add query". Pronto, e fazes aí a tua query. Nessa query, tens de especificar no SELECT que é o valor da textbox1 (por exemplo) que ele tem de procurar nesse SELECT.

No fim (quando concluíres a query), deves ter algo semelhante:

Private Sub Button19_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button19.Click
        Try
            Me.TAlunosTableAdapter.FillBy(Me.BasedeDadosDataSet.TClientes, TextBox2.Text)
        Catch ex As System.Exception
            System.Windows.Forms.MessageBox.Show(ex.Message)
        End Try
    End Sub

Neste caso, eu copiei o código e colei-o num botão.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jmourao

e isso funciona para dois critérios ao mesmo tempo e havendo mais opcionais?(é que não tou a ver como faço)

por exemplo a marca, o modelo, a matricula e a cor.

o utilizador só tem por exemplo a marca e o modelo, mas a matricula não tem então nessa consulta apareçe tudo o que seja:

ex "honda" "civic" e aparecer todos os carros honda civic e diferentes matriculas e cores diferentes

de seguida outro utilizador pode ter o modelo e a cor ou seja:

"clio" "amarelo" e apareçem todos os clios de cor amarela,  a marca(que obviamente vai ser renault) e as várias matriculas

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

É uma questão de "jogares" com as querys.

Vê alguns manuais de querys SQL e com as querys fazes tudo o que quiseres.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.