Jump to content

Recommended Posts

Posted

Boas

tou a fazer um programa em vb.net e tou a usar uma base de dados em sql.

tenho uma inputbox ligada a uma variavel que guarda aquilo que digitamos nessa mesma variavel...

tou a representar a base de dados em datagridviews.

depois faço a consulta que supostamente devia de ser assim

 "select * from tabela where nome like '%variavel%'

o programa faz bem a consulta mas depois nao apresenta nenhum resultado no datagridview..

cumpz

Posted
DataGridView1.Columns.Clear()

        Dim pesquisa2 As String

        pesquisa2 = InputBox("O nome do atleta que quer procurar?")

        Const constr As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Documents and Settings\axpp\Ambiente de trabalho\controloantidoping\aplicaçãoantidopping\aplicaçãoantidopping\controlo_antidoping.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"

        Dim db As New SqlConnection(constr)

        db.Open()
        Dim varsql As String
        Dim num_campos As Integer
        Dim campo As String

        varsql = "select * from controlo_antidoping where Nome = " & pesquisa2
        Dim cmd As New SqlCommand(varsql, db)
        Dim dr As SqlDataReader
        dr = cmd.ExecuteReader
        num_campos = dr.FieldCount

        Dim idx_linha As Integer = 0
        Dim idx As Integer

        For idx = 0 To num_campos - 1
            campo = dr.GetName(idx)
            DataGridView1.Columns.Add(campo, campo)
        Next

        While dr.Read
            Dim linha As New DataGridViewRow()
            DataGridView1.Rows.Add(linha)
            DataGridView1.Rows(idx_linha).Cells(0).Value = dr.Item(0)
            DataGridView1.Rows(idx_linha).Cells(1).Value = RTrim(dr.Item(1))


            DataGridView1.Rows(idx_linha).Cells(2).Value = dr.Item(2)
            DataGridView1.Rows(idx_linha).Cells(3).Value = Trim(dr.Item(3))
            DataGridView1.Rows(idx_linha).Cells(4).Value = Trim(dr.Item(4))
            DataGridView1.Rows(idx_linha).Cells(5).Value = Trim(dr.Item(5))
            DataGridView1.Rows(idx_linha).Cells(6).Value = Trim(dr.Item(6))
            DataGridView1.Rows(idx_linha).Cells(7).Value = Trim(dr.Item(7))

            DataGridView1.Rows(idx_linha).Cells(8).Value = Trim(dr.Item(8))
            DataGridView1.Rows(idx_linha).Cells(9).Value = Trim(dr.Item(9))
            DataGridView1.Rows(idx_linha).Cells(10).Value = Trim(dr.Item(10))
            DataGridView1.Rows(idx_linha).Cells(11).Value = Trim(dr.Item(11))
            DataGridView1.Rows(idx_linha).Cells(12).Value = Trim(dr.Item(12))


            idx_linha = idx_linha + 1

        End While

        DataGridView1.AutoResizeColumnHeadersHeight()
        DataGridView1.AutoResizeColumns()
        DataGridView1.AutoResizeRows()

        dr.Close()
        db.Close()

este codigo todo esta todo dentro de um botão....

eu acho que o meu erro esta na instrução de sql..

varsql = "select * from controlo_antidoping where Nome = " & pesquisa2

ja exprimentei meter "", & e nao funciona...

cumpz

Posted

Experimenta fazer assim:

varsql = "select * from controlo_antidoping where Nome = '" & pesquisa2 & "'"

assim funciona mas so se colocar o nome do atleta igualzinho como esta na base de dados, vamos supor que eu quero por exemplo precisar todos os atletas chamados luis??? há maneira de fazer isso não ha?

Posted

Em access não me lembro bem mas acho que é:

varsql = "select * from controlo_antidoping where Nome = '*" & pesquisa2 & "*'"

ou

varsql = "select * from controlo_antidoping where Nome = '%" & pesquisa2 & "%'"

Posted

assim funciona mas so se colocar o nome do atleta igualzinho como esta na base de dados, vamos supor que eu quero por exemplo precisar todos os atletas chamados luis??? há maneira de fazer isso não ha?

Faz igual a isso que funciona mas em vez do = poe LIKE, a instrução de SQL deveria +- assim:

SELECT * 
           FROM table
          WHERE myfield LIKE '%PART_OF_THE_STRING%'        

Esta instrução funcionaria assim em Oracle e em qualquer motor que use SQL penso eu. O % é o wildcard, ou seja onde o colocares estas basicamente a dizer que poderá ter algo que desconheces após ou antes, ou até no meio da tua/s variavel.

Com essa instrução se pesquisares "uis" ele vai devolver luis e todos os restantes que tenham essa combinação. Tem atenção de que teres "Luis" e "luis" são situações distintas e que deves avaliar antes de passar a string para o SQL, normalmente em Oracle utilizarias UPPER() para passar tudo para uppercase e efectuares as comparações assim.

Outra questão para a que deves ter atenção é para a optimização do SQL que estás a passar, utilizando um LIKE poderás estar a fazer um FULL TABLE SCAN e dependendo do tamanho da tabela prejudicar a performance.

Alexandre.

Posted

eu nao tinha definido o datasource do datagridview, defeni agr e da me um erro...

diz que o indice estava fora do intervalo. Tem de ser não negativo e inferior ao tamanho da colecção.

tambem ja tentei por a sintaxe cmo o alexandre disse sem definir o datasource do datagridview e tambem nao da :S

Posted

assim funciona mas so se colocar o nome do atleta igualzinho como esta na base de dados, vamos supor que eu quero por exemplo precisar todos os atletas chamados luis??? há maneira de fazer isso não ha?

Aqui onde dizes que funca, põe tudo igual ao que funciona e altera apenas o sinal "=" para um LIKE como é referido e adiciona o simbolo de wildcard {% ou *} se não souberes o simbolo RTFM.

Se funcionou assim, como dizes, se adicionare o LIKE e o wildcard o select tem de funcar caso procures "uis" por ex.

Alexandre.

Posted
mas ja conseguiste resolver o problema??

pensei que sim mas não... 🙂

:wallbash:

jpaulino, a informação que postas-te aí faz o pretendido...ou seja, faz o mesmo que nós ( eu e axpppp ) pretendemos??

CUMPS

"use windows, você merece!"

Posted

nup tudo na mesma...

eu consigo pesquisar um nome se meter como esta na base de dados, mas ainda nao consigo por tipo "joao" e aparecer todos os atletas com nome joao da base de dados...

Posted

nup tudo na mesma...

eu consigo pesquisar um nome se meter como esta na base de dados, mas ainda nao consigo por tipo "joao" e aparecer todos os atletas com nome joao da base de dados...

select * from atletas where nome like 'joao%'

Deveria fazer o que queres.

"Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !"

Sign on a computer system consultant's desk

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.