BUSCAR POR DATA
Boa tarde pessoal.
Estou desenvolvendo um projeto em VB6 e estou com o seguinte problema:
Configurei para realizar uma busca no banco de dados em access e filtrar na listview de acorda com o campo procurado na tela e tal.
fiz uma pesquisa combinada, os campos são: NOME DO CLIENTE, DIA, MÊS E ANO.
ele so começa a fazer a pesquisa quando seleciono o ano e os outros campos estiverem preenchidos.
exemplo: o correto seria somente para mostrar as informações do cliente com:
nome: daniel marcos
dia: 12
mês:outubro
ano: 2016
isso de acordo com o filtro...
mais se alterar e pesquisar do mesmo jeito so alterando o dia para: 1 ou 2, ele traz os mesmos resultados...o porem é que era so pra trazer se fosse dia 12.
alguem tem como me ajudar...
vou postar a linha de codigo que realiza a busca:
Private Sub cmbAno_Click()
Dim valor_pesq As String
Dim valor_pesq2 As String
Dim valor_pesq3 As String
Dim valor_pesq4 As String
valor_pesq = cmbDia
valor_pesq2 = TextBox1
valor_pesq3 = cmbMes
valor_pesq4 = cmbAno
[ô]Cria variável que armazena os comandos SQL
Dim ComandoSQL As String
ComandoSQL = [Ô]select * from Pedidos where DiaCompra like [ô]*[Ô] & valor_pesq & [Ô]*[ô] and ID like [ô]*[Ô] & valor_pesq2 & [Ô]*[ô] and MesCompra like [ô]*[Ô] & valor_pesq3 & [Ô]*[ô] and AnoCompra like [ô]*[Ô] & valor_pesq4 & [Ô]*[ô][Ô]
[ô]Chama a rotina que faz a conexão com o BD
Call Conecta
[ô]Atribui a variável objeto de BD a execução dos comandos SQL
Set consulta = banco.OpenRecordset(ComandoSQL)
[ô]Tratamento de erro de acesso aos dados. Se houver erro, desvia o comando para o rótulo Sai
On Error Resume Next
ListadeVendas.ListItems.Clear
While Not consulta.EOF
Set List = ListadeVendas.ListItems.Add(Text:=consulta(0)) [ô]id
List.SubItems(1) = consulta(1) [ô]nome
List.SubItems(2) = consulta(2) [ô]sobrenome
List.SubItems(3) = consulta(3) [ô]CPF
List.SubItems(4) = consulta(4) [ô]CPF
List.SubItems(5) = consulta(5) [ô]CPF
List.SubItems(6) = consulta(6) [ô]CPF
List.SubItems(7) = consulta(7) [ô]CPF
List.SubItems(8) = consulta(8) [ô]CPF
List.SubItems(9) = consulta(9) [ô]CPF
List.SubItems(10) = consulta(10) [ô]CPF
List.SubItems(11) = consulta(11) [ô]CPF
List.SubItems(12) = consulta(12) [ô]CPF
consulta.MoveNext
Wend
Call Desconecta
Estou desenvolvendo um projeto em VB6 e estou com o seguinte problema:
Configurei para realizar uma busca no banco de dados em access e filtrar na listview de acorda com o campo procurado na tela e tal.
fiz uma pesquisa combinada, os campos são: NOME DO CLIENTE, DIA, MÊS E ANO.
ele so começa a fazer a pesquisa quando seleciono o ano e os outros campos estiverem preenchidos.
exemplo: o correto seria somente para mostrar as informações do cliente com:
nome: daniel marcos
dia: 12
mês:outubro
ano: 2016
isso de acordo com o filtro...
mais se alterar e pesquisar do mesmo jeito so alterando o dia para: 1 ou 2, ele traz os mesmos resultados...o porem é que era so pra trazer se fosse dia 12.
alguem tem como me ajudar...
vou postar a linha de codigo que realiza a busca:
Private Sub cmbAno_Click()
Dim valor_pesq As String
Dim valor_pesq2 As String
Dim valor_pesq3 As String
Dim valor_pesq4 As String
valor_pesq = cmbDia
valor_pesq2 = TextBox1
valor_pesq3 = cmbMes
valor_pesq4 = cmbAno
[ô]Cria variável que armazena os comandos SQL
Dim ComandoSQL As String
ComandoSQL = [Ô]select * from Pedidos where DiaCompra like [ô]*[Ô] & valor_pesq & [Ô]*[ô] and ID like [ô]*[Ô] & valor_pesq2 & [Ô]*[ô] and MesCompra like [ô]*[Ô] & valor_pesq3 & [Ô]*[ô] and AnoCompra like [ô]*[Ô] & valor_pesq4 & [Ô]*[ô][Ô]
[ô]Chama a rotina que faz a conexão com o BD
Call Conecta
[ô]Atribui a variável objeto de BD a execução dos comandos SQL
Set consulta = banco.OpenRecordset(ComandoSQL)
[ô]Tratamento de erro de acesso aos dados. Se houver erro, desvia o comando para o rótulo Sai
On Error Resume Next
ListadeVendas.ListItems.Clear
While Not consulta.EOF
Set List = ListadeVendas.ListItems.Add(Text:=consulta(0)) [ô]id
List.SubItems(1) = consulta(1) [ô]nome
List.SubItems(2) = consulta(2) [ô]sobrenome
List.SubItems(3) = consulta(3) [ô]CPF
List.SubItems(4) = consulta(4) [ô]CPF
List.SubItems(5) = consulta(5) [ô]CPF
List.SubItems(6) = consulta(6) [ô]CPF
List.SubItems(7) = consulta(7) [ô]CPF
List.SubItems(8) = consulta(8) [ô]CPF
List.SubItems(9) = consulta(9) [ô]CPF
List.SubItems(10) = consulta(10) [ô]CPF
List.SubItems(11) = consulta(11) [ô]CPF
List.SubItems(12) = consulta(12) [ô]CPF
consulta.MoveNext
Wend
Call Desconecta
que banco de dados que é
Se for Access a formatação tem que ser MM/DD/YYYY entre #
Se for mysql a formatação tem que ser YYYY/MM/DD entre [ô]
Exemplo
Access
comandosql = [Ô]Select * from tabela where data #[Ô] & format(data,[Ô]MM/DD/YYYY[Ô]) & [Ô]#[Ô]
Mysql
comandosql = [Ô]Select * from tabela where data [ô][Ô] & format(data,[Ô]YYYY/MM/DD[Ô]) & [Ô][ô][Ô]
Seria isso
Nesse Link tem algumas dicas de como fazer mais pesquisas através da data, inclusive separando dia,mês e ano
Se for Access a formatação tem que ser MM/DD/YYYY entre #
Se for mysql a formatação tem que ser YYYY/MM/DD entre [ô]
Exemplo
Access
comandosql = [Ô]Select * from tabela where data #[Ô] & format(data,[Ô]MM/DD/YYYY[Ô]) & [Ô]#[Ô]
Mysql
comandosql = [Ô]Select * from tabela where data [ô][Ô] & format(data,[Ô]YYYY/MM/DD[Ô]) & [Ô][ô][Ô]
Seria isso
Nesse Link tem algumas dicas de como fazer mais pesquisas através da data, inclusive separando dia,mês e ano
pelo q entendi da string, são campos separados para cada informação e esta tudo em string, o caracter curinga * define q procure tudo + o q estiver no campo.....
se vc poe no campo mes 2, vai pegar tudo q tiver fevereiro 02 e dezembro 12, pra dia a coisa piora, 1 vai filtar 1,10,11,12,13....21,31
mostra a estrutura do banco q pode ficar melhor de vermos, mas pela string o maior erro esta na forma q o banco foi elaborado, não q não possa ser usado assim, mas a string tem q mudar, e o tipo de valores no banco tmb....
se vc poe no campo mes 2, vai pegar tudo q tiver fevereiro 02 e dezembro 12, pra dia a coisa piora, 1 vai filtar 1,10,11,12,13....21,31
mostra a estrutura do banco q pode ficar melhor de vermos, mas pela string o maior erro esta na forma q o banco foi elaborado, não q não possa ser usado assim, mas a string tem q mudar, e o tipo de valores no banco tmb....
Tópico encerrado , respostas não são mais permitidas