COMO FAZER UM SELECT COM DATA

THIAGOEMECAL 04/09/2009 17:41:31
#322000
OLA AMIGOS...


ESTOU COM UM PROBLEMA DE COMO FAZER UM SELECT COM DATA


EU QUERO AXAR TODOS MEUS CLIENTES QUE A DATA DE VENCIMENTO SEJA MAIOR Q UM NUMERO X DE DIAS

EU JA MONTEI A SEQUINTE PROGRAMAÇÃO !

SQL = [Ô]select * from caixa where [Ô]
If cmbCliente <> [Ô][Ô] Then
rsClientes.FindFirst [Ô]razao=[ô][Ô] & Trim(cmbCliente) & [Ô][ô][Ô]
If Not rsClientes.NoMatch Then
SQL = SQL & [Ô]codcli =[Ô] & rsClientes!CODIGO
End If
End If
If IsNumeric(dia) Then
[ô] SQL = SQL & [Ô]=[ô][Ô] & dia & [Ô][ô] and [Ô]
[ô] ALI EI PRECIZO COLOCAR O RESTANTE DO SQL PARA AXAR TODOS VENCIMENTOS MAIOR QUE 20 DIAS !!
End If

NAO SEI SE FUI BEM CLARO ....
MAIS ESPERO AJUDA !

VLW GALERA
EMERSONTADEU 04/09/2009 20:33:49
#322028
bla bla bla ...

SQL = SQL & [Ô] AND dia BETWEEN #[Ô] & cstr(paramDT_INI) & [Ô]# AND #[Ô] & cstr(DATEADD(paramDT_INI,20,d)) & [Ô]#[Ô]


Como é comando SQL talvez tenha que utilizar um format para mandar a strSQL corretamente, outro detalhe que dependendo do seu Banco precisa mandar delimitadores de data, Access é o famoso sustenido # 2009-01-01 # , SQL e Oracle é o mesmo da string ... aspas simples [ô]2009-01-01[ô]

O exemplo está para Access.

Realmente espero que esteja utilizando os tipos corretos tanto na base quanto no VB, pois é falha grave armazenar e processar strings no lugar de datas ... tipo data possue funções nativas como DATEADD que acrescenta a paramDT_INI (variável tipo data) , 20, dias se vc jogar uma string no lugar de paramDT_INI pode ter problemas de conversões e a função pode falhar...
Vc acrescentou 20 dias pq o parametro [Ô]d[Ô] foi informado, s = segundos e tem parametro para cada unidade que desejar.

Outro detalhe é que fica pior ainda se guarda string no banco, ae a porcaria do Between (entre) também se perde comparando string.

Os tipos de dados nunca foram um delírio de programadores malucos que desenvolveram as linguagens de programação, se vc utiliza o tipo correto todas as ferramentas oferecem funções próprias o que diminui drasticamente os erros em programas.
LLAIA 04/09/2009 20:52:51
#322029
esse trecho tá esquisito:


If cmbCliente <> [Ô][Ô] Then
rsClientes.FindFirst [Ô]razao=[ô][Ô] & Trim(cmbCliente) & [Ô][ô][Ô]
If Not rsClientes.NoMatch Then
SQL = SQL & [Ô]codcli =[Ô] & rsClientes!CODIGO
End If
End If


vc tá se baseando no nome do cliente. se tiverem dois com o mesmo nome? se o seu sistema é para pequenos comércios, vai dá uma problema danado, pois os usuários em muitos casos não cadastram o nome completo dos clientes. cansei de pegar banco de dados com josés e joãos da silva.
Tópico encerrado , respostas não são mais permitidas