PESQUISA POR CODIGO E DATA

PACIFICO 17/04/2012 11:10:13
#400052
Olá amigos do VBMania, estou quebrando a minha cabeça e deixando também os meus cabelos brancos. hehehe

Este é o meu Select:

sql = [Ô]select DISTINCT L1_FILIAL,L1_VEND,L1_CLIENTE,L1_NUM,L1_EMISSAO,L1_VLRTOT from SL1010 where [Ô] + campoPesquisa + [Ô] like [ô][Ô] + ComboBox1.Text + [Ô]%[ô] AND L1_EMISSAO= [ô]20120417[ô][Ô]

Nesta linha cima, estou pesquisando pelo código do vendedor e a data da venda.
Assim ele funciona normalmente, todas as informações aparecem num Datagridview, só que todas as vezes tenho que colocar a data atual.
Obs: Na minha base de dados a data está assim: 20120417
E estou usando um DataTimePicker para selecionar a data, caso ficar muito difícil a linha de programação, posso substituir por um textbox.
KERPLUNK 17/04/2012 11:23:13
#400055
1 - Se o valor do campo é data, o campo deveria ser do tipo data.
2 - Você pode criar um [Ô]pseudo-campo[Ô], formatando o valor corretamente para depois fazer a seleção, usando substring
Do jeito que está, você não vai conseguir ordenar e o agrupamento pode ter problemas, suponha que você queira fazer um agrupamento por mês, não vai ter como pois o campo é string e não data.
A maneira correta de solucionar seu problema, é criar um novo campo na tabela, com o tipo data e fazer uma rotina que [Ô]transfira[Ô] os valores do campo string para o campo data e a partir disso pronto, usar o campo data ao invés do varchar

PACIFICO 17/04/2012 12:23:54
#400066
KERPLUNK, aí que está o problema, pois, é o sistema da empresa e já está assim e não posso alterá-lo.
Só que já tive este problema sobre data e foi resolvido da seguinte forma:

sql = [Ô]SELECT a1_cod, SA1010.A1_CGC, a1_nome,A1_TEL,A1_XCEL, RIGHT(RTRIM(a1_dtnasc), 2) + [ô]/[ô] + SUBSTRING(a1_dtnasc, 5, 2) + [ô]/[ô] + LEFT(a1_dtnasc, 4) AS NewData [Ô]
sql = sql & [Ô] FROM sa1010 where Day(a1_dtnasc)=[ô][Ô] & Mid(CDataInicial.Text, 1, 2) & [Ô][ô] and Month(a1_dtnasc)=[ô][Ô] & Mid(CDataFinal.Text, 4, 2) & [Ô][ô][Ô]

Este exemplo foi dado por um colaborador do VBMania.

KERPLUNK 17/04/2012 12:48:46
#400075
Então, você precisa de uma maneira de colocar a data atual na cláusua where, isso?
PACIFICO 17/04/2012 12:50:37
#400076
Exatamente. Você é Show!
ROBIU 17/04/2012 12:56:03
#400077
Resposta escolhida
Este exemplo foi dado por um colaborador do VBMania.

1 - Coloca a propriedade Format do dateTimePicker1 = Custom

2 -
DateTimePicker1.CustomFormat = [Ô]yyyyMMdd[Ô] [ô]Muda para o formato de data do campo
Sql = [Ô]select DISTINCT L1_FILIAL,L1_VEND,L1_CLIENTE,L1_NUM,L1_EMISSAO, [Ô]
Sql &= [Ô]L1_VLRTOT from SL1010 where [Ô] & [Ô]campoPesquisa[Ô] & [Ô] like [ô][Ô] & ComboBox1.Text
Sql &= [Ô]%[ô] AND L1_EMISSAO=[ô][Ô] & DateTimePicker1.Text & [Ô][ô][Ô]
DateTimePicker1.CustomFormat = [Ô]dd/MM/yyyy[Ô] [ô]Retorna para o formato Brasil

PACIFICO 17/04/2012 13:29:04
#400080
ROBIU, da forma que você ensinou funcionou 100%.
Obrigado!

Fico grato pela atenção!

Não esquecendo de agradecer também pela força o colaborador KERPLUNK.
Tópico encerrado , respostas não são mais permitidas