axpppp Posted May 22, 2009 at 09:09 AM Report #266353 Posted May 22, 2009 at 09:09 AM 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
duduml Posted May 22, 2009 at 10:38 AM Report #266388 Posted May 22, 2009 at 10:38 AM podes colocar aí o código completo? "use windows, você merece!"
axpppp Posted May 22, 2009 at 10:43 AM Author Report #266392 Posted May 22, 2009 at 10:43 AM 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
jpaulino Posted May 22, 2009 at 10:54 AM Report #266400 Posted May 22, 2009 at 10:54 AM Experimenta fazer assim: varsql = "select * from controlo_antidoping where Nome = '" & pesquisa2 & "'"
axpppp Posted May 22, 2009 at 11:08 AM Author Report #266407 Posted May 22, 2009 at 11:08 AM 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?
jpaulino Posted May 22, 2009 at 11:15 AM Report #266414 Posted May 22, 2009 at 11:15 AM 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 & "%'"
axpppp Posted May 22, 2009 at 11:32 AM Author Report #266431 Posted May 22, 2009 at 11:32 AM jpaulino essas 2 linhas de codigo dao bem, mas depois no datagridview nao aparece nada... acho que acontece o que acontecia no inicio
jpaulino Posted May 22, 2009 at 11:38 AM Report #266433 Posted May 22, 2009 at 11:38 AM Mas porque estás a preencher linha a linha e não defines a datasource ? Tenta colocar na inputbox um "a" para ver se aparece alguma coisa.
righton Posted May 22, 2009 at 11:43 AM Report #266435 Posted May 22, 2009 at 11:43 AM 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.
jpaulino Posted May 22, 2009 at 12:31 PM Report #266448 Posted May 22, 2009 at 12:31 PM Obrigado Alexandre! Não alterei de "=" para "LIKE" 🙂
axpppp Posted May 22, 2009 at 01:13 PM Author Report #266463 Posted May 22, 2009 at 01:13 PM 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
duduml Posted May 22, 2009 at 02:28 PM Report #266501 Posted May 22, 2009 at 02:28 PM pois, eu estou a fazer um projecto em que também estou a por consultas pré-definidas, e acontece-me o mesmo que tu... contudo, dá uma olhada por http://www.w3schools.com/sql/sql_select.asp... CUMPS "use windows, você merece!"
axpppp Posted May 22, 2009 at 02:49 PM Author Report #266515 Posted May 22, 2009 at 02:49 PM pois, eu estou a fazer um projecto em que também estou a por consultas pré-definidas, e acontece-me o mesmo que tu... contudo, dá uma olhada por http://www.w3schools.com/sql/sql_select.asp... CUMPS mas ja conseguiste resolver o problema??
righton Posted May 22, 2009 at 04:43 PM Report #266560 Posted May 22, 2009 at 04:43 PM 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.
jpaulino Posted May 22, 2009 at 05:15 PM Report #266573 Posted May 22, 2009 at 05:15 PM Já experimentaste desta forma: http://vbtuga.blogspot.com/2008/04/vbnet-utilizando-o-controlo.html (desculpa o artigo estar mal formatado ...)
duduml Posted May 22, 2009 at 09:33 PM Report #266627 Posted May 22, 2009 at 09:33 PM mas ja conseguiste resolver o problema?? pensei que sim mas não... 🙂 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!"
duduml Posted May 25, 2009 at 10:48 AM Report #267065 Posted May 25, 2009 at 10:48 AM então, não há novidades por cá? "use windows, você merece!"
axpppp Posted May 26, 2009 at 09:15 AM Author Report #267290 Posted May 26, 2009 at 09:15 AM 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...
Betovsky Posted May 26, 2009 at 09:18 AM Report #267292 Posted May 26, 2009 at 09:18 AM 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
axpppp Posted May 26, 2009 at 09:51 AM Author Report #267310 Posted May 26, 2009 at 09:51 AM sim mas eu em vez de joao tenho uma variavel...e acho que ai é que deve tar o problema
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