Ir para conteúdo
Fórum Script Brasil
  • 0

Pesquisa por DATA


Leandro_Pirozzi

Pergunta

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

  • 0

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 por Leandro_Pirozzi
Link para o comentário
Compartilhar em outros sites

  • 0

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]

Link para o comentário
Compartilhar em outros sites

  • 0
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 por Leandro_Pirozzi
Link para o comentário
Compartilhar em outros sites

  • 0

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!!!

Link para o comentário
Compartilhar em outros sites

  • 0

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]

Link para o comentário
Compartilhar em outros sites

  • 0
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?

Link para o comentário
Compartilhar em outros sites

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0

Aqui ele informa que não existe dados para essa busca.

ai apelei e fiz o seguinte:

criei um text e deixei visible = false

No 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...

Link para o comentário
Compartilhar em outros sites

  • 0
ai apelei e fiz o seguinte:

criei um text e deixei visible = false

No 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().

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...