Leandro_Pirozzi Postado Abril 1, 2009 Denunciar Share Postado Abril 1, 2009 Bom dia galera!!Estou efetuando uma busca por período, porém ela não me exibe nenhum erro nem nada, simplesmente não carrega as informações e exibe a msg de q não existem dados para a procura, sendo que existe.Será que meu select esta errado?Quem puder ajudar, agradeço.Private Sub cmdloc_Click() Dim SQL As String Dim SQL1 As String SQL = "SELECT EMPRESA, CONTATO, HISTORICO, DATATAREFA " & _ " FROM CONTATOS_HISTORICO " & _ " WHERE HISTORICO like '%" & txtloc.Text & "%'" & _ " AND ((DATATAREFA) BETWEEN " & DTPicker1.Value & "" & _ " AND " & DTPicker2.Value & ")" Set cnbuscahist = New ADODB.Connection With cnbuscahist .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=" & App.Path & "\CONTATOS.mdb;" .Open End With Set rsbuscahist = New ADODB.Recordset Set rsbuscahist.ActiveConnection = cnbuscahist rsbuscahist.CursorLocation = adUseClient rsbuscahist.Open SQL' rsbuscahist.Open SQL1 Set DataGrid1.DataSource = rsbuscahist If rsbuscahist.EOF Then DataGrid1.Visible = False MsgBox ("Não existem dados para essa busca!") txtloc.Text = "" txtloc.SetFocus Else DataGrid1.Visible = True End IfEnd Sub Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gabriel Koerich Postado Abril 1, 2009 Denunciar Share Postado Abril 1, 2009 você está fazendo apenas pelo período? porque na sua query ele procura o histórico e o período. teria que pesquisar pelos 2 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leandro_Pirozzi Postado Abril 1, 2009 Autor Denunciar Share Postado Abril 1, 2009 então, na verdade ele vai me trazer os historicos que contenham a palavra q o usuario digitou entre o periodo, entendeu? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gabriel Koerich Postado Abril 1, 2009 Denunciar Share Postado Abril 1, 2009 talvez seja pelo formato da data, tente mudar. sei que no caché a função é assim, tente procurar no seu banco... WHERE Campo BETWEEN TO_DATE('datainicial','DD/MM/YYYY') AND TO_DATE('datafinal','DD/MM/YYYY') Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leandro_Pirozzi Postado Abril 1, 2009 Autor Denunciar Share Postado Abril 1, 2009 (editado) Mudei o select e ainda nada. SQL = "SELECT EMPRESA, CONTATO, HISTORICO, DATATAREFA " & _ " FROM CONTATOS_HISTORICO " & _ " WHERE HISTORICO like '%" & txtloc.Text & "%'" & _ " AND DateValue(DATATAREFA) >= DateValue('" & DTPicker1.Value & "') AND DateValue(DATATAREFA) <= DateValue('" & DTPicker2.Value & "')"exibe a msg tipo de dados imcompativel na expressao de criterios. Editado Abril 1, 2009 por Leandro_Pirozzi Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Abril 1, 2009 Denunciar Share Postado Abril 1, 2009 tenho a impressao q o campo DATATAREFA é do tipo texto não??você tinha comentado q tinha mudado todos seus campos pra texto num otro tópico não??bom, primera coisa, lembre-se q os varios tipos existem por uma razao. se tdo texto fosse bom, não existiriam otros tipos. se o dado é uma data, é bom gravar como data, por mtos motivos, inclusive o problema q você ta tendo.se o campo tiver como texto mesmo, você vai ter q converter (o q faz a query demorar mais ne) pra fazer o filtro.em bancos pequenos isso não faz tanta diferenca, mas tem q ficar de olho nisso em aplicacoes gdes.se ta como texto mesmo, então faca assim:SQL = "SELECT EMPRESA, CONTATO, HISTORICO, DATATAREFA " & _" FROM CONTATOS_HISTORICO " & _" WHERE HISTORICO like '%" & txtloc.Text & "%'" & _" AND CDate(DATATAREFA) Between #" & Format(DTPicker1.Value, "YYYY-MM-DD" & "# AND #" & Format(DTPicker2.Value, "YYYY-MM-DD") & "#"[/code] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leandro_Pirozzi Postado Abril 1, 2009 Autor Denunciar Share Postado Abril 1, 2009 (editado) tenho a impressao q o campo DATATAREFA é do tipo texto não??você tinha comentado q tinha mudado todos seus campos pra texto num otro tópico não??bom, primera coisa, lembre-se q os varios tipos existem por uma razao. se tdo texto fosse bom, não existiriam otros tipos. se o dado é uma data, é bom gravar como data, por mtos motivos, inclusive o problema q você ta tendo.se o campo tiver como texto mesmo, você vai ter q converter (o q faz a query demorar mais ne) pra fazer o filtro.em bancos pequenos isso não faz tanta diferenca, mas tem q ficar de olho nisso em aplicacoes gdes.se ta como texto mesmo, então faca assim:SQL = "SELECT EMPRESA, CONTATO, HISTORICO, DATATAREFA " & _ " FROM CONTATOS_HISTORICO " & _ " WHERE HISTORICO like '%" & txtloc.Text & "%'" & _ " AND CDate(DATATAREFA) Between #" & Format(DTPicker1.Value, "YYYY-MM-DD" & "# AND #" & Format(DTPicker2.Value, "YYYY-MM-DD") & "#" Então kuroi ele não esta como texto não, o que está como texto é de uma outra tabela. Essa aqui a datatarefa esta como data mesmo. Mas vou aproveitar e converter pois pra mim o erro é no formato da data mesmo. vamos ver se vai dar certo! Obrigado! Opa Kuroi voce é o cara hehehe... Era isso mesmo. Era o formato. OBRIGADO!!!! Olha como ficou. Private Sub cmdloc_Click() Dim SQL As String SQL = "SELECT EMPRESA, CONTATO, HISTORICO, DATATAREFA " & _ " FROM CONTATOS_HISTORICO " & _ " WHERE HISTORICO like '%" & txtloc.Text & "%'" & _ " AND (DATATAREFA) BETWEEN #" & Format(DTPicker1.Value, "YYYY-MM-DD") & "# AND #" & Format(DTPicker2.Value, "YYYY-MM-DD") & "#" Set cnbuscahist = New ADODB.Connection With cnbuscahist .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=" & App.Path & "\CONTATOS.mdb;" .Open End With Set rsbuscahist = New ADODB.Recordset Set rsbuscahist.ActiveConnection = cnbuscahist rsbuscahist.CursorLocation = adUseClient rsbuscahist.Open SQL Set DataGrid1.DataSource = rsbuscahist If rsbuscahist.EOF Then DataGrid1.Visible = False MsgBox ("Não existem dados para essa busca!") txtloc.Text = "" txtloc.SetFocus Else DataGrid1.Visible = True End If End Sub Editado Abril 1, 2009 por Leandro_Pirozzi Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Abril 1, 2009 Denunciar Share Postado Abril 1, 2009 é, sempre use YYYY-MM-DD. funciona pra todos os bancos, e acho q em qualquer configura de data do sistema. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leandro_Pirozzi Postado Abril 1, 2009 Autor Denunciar Share Postado Abril 1, 2009 Mais uma dúvida.No caso aqui nesse select como eu faria pra ele localizar uma palavra exata?No caso preciso que localize a palavra "perspectiva" dentro do campo HISTORICO. SQL = "SELECT EMPRESA, CONTATO, HISTORICO, DATATAREFA " & _ " FROM CONTATOS_HISTORICO " & _ " WHERE HISTORICO like '" & pers & "%'" & _ " AND (DATATAREFA) BETWEEN #" & Format(DTPicker1.Value, "YYYY-MM-DD") & "# AND #" & Format(DTPicker2.Value, "YYYY-MM-DD") & "#"Obrigado!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Abril 1, 2009 Denunciar Share Postado Abril 1, 2009 você quer q tenha "perspectiva" e mais nd la dentro??então acho q é assim:SQL = "SELECT EMPRESA, CONTATO, HISTORICO, DATATAREFA " & _" FROM CONTATOS_HISTORICO " & _" WHERE HISTORICO = 'perspectiva'" & _" AND (DATATAREFA) BETWEEN #" & Format(DTPicker1.Value, "YYYY-MM-DD") & "# AND #" & Format(DTPicker2.Value, "YYYY-MM-DD") & "#"[/code] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leandro_Pirozzi Postado Abril 1, 2009 Autor Denunciar Share Postado Abril 1, 2009 você quer q tenha "perspectiva" e mais nd la dentro??então acho q é assim:SQL = "SELECT EMPRESA, CONTATO, HISTORICO, DATATAREFA " & _ " FROM CONTATOS_HISTORICO " & _ " WHERE HISTORICO = 'perspectiva'" & _ " AND (DATATAREFA) BETWEEN #" & Format(DTPicker1.Value, "YYYY-MM-DD") & "# AND #" & Format(DTPicker2.Value, "YYYY-MM-DD") & "#"dá pra fazer com like tb, porque tenho medo de algum usuário escrever errado a palavra "perspectiva" e quando eu pedir pra procurar ele não retornar nada.entendeu? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Abril 1, 2009 Denunciar Share Postado Abril 1, 2009 se ele escreve errado não vai achar nem com o like. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leandro_Pirozzi Postado Abril 1, 2009 Autor Denunciar Share Postado Abril 1, 2009 (editado) se ele escreve errado não vai achar nem com o like.tem alguma sugestão para poder localizar tipo a palavra iniciando com "pers"??ahhh se possivel localizar sendo maiuscula PERS ou minuscula pers Editado Abril 1, 2009 por Leandro_Pirozzi Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Abril 1, 2009 Denunciar Share Postado Abril 1, 2009 a na verdade no access não funciona o %, isso é em sql e otros bancos. no access você tem q usar o *.ai é como você tava fazendo. tipo assim:SQL = "SELECT EMPRESA, CONTATO, HISTORICO, DATATAREFA " & _" FROM CONTATOS_HISTORICO " & _" WHERE HISTORICO like 'pers*'" & _" AND (DATATAREFA) BETWEEN #" & Format(DTPicker1.Value, "YYYY-MM-DD") & "# AND #" & Format(DTPicker2.Value, "YYYY-MM-DD") & "#"[/code]e se, não me engano, o access acho q não faz diferenca entra maiusculo e minusculo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leandro_Pirozzi Postado Abril 1, 2009 Autor Denunciar Share Postado Abril 1, 2009 Aqui ele informa que não existe dados para essa busca.ai apelei e fiz o seguinte:criei um text e deixei visible = falseNo load do form txtpers.Text = "pers"E no select SQL = "SELECT EMPRESA, CONTATO, HISTORICO, DATATAREFA, ASSESSOR " & _ " FROM CONTATOS_HISTORICO " & _ " WHERE HISTORICO like '%" & txtpers.Text & "%'" & _ " AND (DATATAREFA) BETWEEN #" & Format(DTPicker1.Value, "YYYY-MM-DD") & "# AND #" & Format(DTPicker2.Value, "YYYY-MM-DD") & "# AND ASSESSOR = '" & Login & "'"Ai ele localizou, tudo que era maiusculo e minusculo.No caso minha base de dados vai ser oracle, ai não vai funcionar dessa maneira ne? no caso só vai localizar o q estiver em minusculo é isso?tem como localizar em maiusculo e minusculo?obrigado e olha a gambiarra ai hahahaha... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Abril 1, 2009 Denunciar Share Postado Abril 1, 2009 ai apelei e fiz o seguinte:criei um text e deixei visible = falseNo load do form txtpers.Text = "pers"nossa, mas acho q você tava fazendo como no seu codigo de cima, q você tava concatenando do pers, ele tava procurando uma variavel chamada pers. e como não existe, ele vai passar vazio e por isso não achava.pra não ter q fazer isso q você fez, você tem q passar o pers como parte da string tipo no meu codigo acima.No caso minha base de dados vai ser oracle, ai não vai funcionar dessa maneira ne? no caso só vai localizar o q estiver em minusculo é isso?tem como localizar em maiusculo e minusculo?ai não sei como é no oracle. se ele diferencia maiuscula e minuscula, você vai ter q converter pra um dos dois na query (apesar de q talvez, no oracle, isso seja configuravel).no access acho seria tipo assim:SQL = "SELECT EMPRESA, CONTATO, HISTORICO, DATATAREFA, ASSESSOR " & _" FROM CONTATOS_HISTORICO " & _" WHERE UCase(HISTORICO) like '%' & UCase(" & txtpers.Text & ") & "'%'" & _" AND (DATATAREFA) BETWEEN #" & Format(DTPicker1.Value, "YYYY-MM-DD") & "# AND #" & Format(DTPicker2.Value, "YYYY-MM-DD") & "# AND ASSESSOR = '" & Login & "'"[/code]ai você teria q achar uma funcao no oracle equivalente ao UCase(). Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Leandro_Pirozzi
Bom dia galera!!
Estou efetuando uma busca por período, porém ela não me exibe nenhum erro nem nada, simplesmente não carrega as informações e exibe a msg de q não existem dados para a procura, sendo que existe.
Será que meu select esta errado?
Quem puder ajudar, agradeço.
Private Sub cmdloc_Click()
Dim SQL As String
Dim SQL1 As String
SQL = "SELECT EMPRESA, CONTATO, HISTORICO, DATATAREFA " & _
" FROM CONTATOS_HISTORICO " & _
" WHERE HISTORICO like '%" & txtloc.Text & "%'" & _
" AND ((DATATAREFA) BETWEEN " & DTPicker1.Value & "" & _
" AND " & DTPicker2.Value & ")"
Set cnbuscahist = New ADODB.Connection
With cnbuscahist
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & App.Path & "\CONTATOS.mdb;"
.Open
End With
Set rsbuscahist = New ADODB.Recordset
Set rsbuscahist.ActiveConnection = cnbuscahist
rsbuscahist.CursorLocation = adUseClient
rsbuscahist.Open SQL
' rsbuscahist.Open SQL1
Set DataGrid1.DataSource = rsbuscahist
If rsbuscahist.EOF Then
DataGrid1.Visible = False
MsgBox ("Não existem dados para essa busca!")
txtloc.Text = ""
txtloc.SetFocus
Else
DataGrid1.Visible = True
End If
End Sub
Link para o comentário
Compartilhar em outros sites
15 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.