SQL CONTAS VENCIDAS

GIOGOMES 20/11/2014 19:52:48
#442667
seguinte

tenho dois campos:

Data vencimento
Contas Pagas= Sim ou Não

queria que fizesse o filtro quando a data de vencimento for menor que a data atual

segue o código

Pago = [Ô]NÃO[Ô]
Dim SQL As String
Dim Criterio As String
Criterio = Format(Date, [Ô]MM/dd/yyyy[Ô])
SQL = [Ô]SELECT * FROM Lancamento_despesa where Data_Vencimento LIKE [ô]*[Ô] <= Criterio & [Ô]*[ô] and Pago Like [ô]*[Ô] & Pago & [Ô]*[ô][Ô]
Data1.RecordSource = SQL
Data1.Refresh

obrigado
MARCELO.TREZE 20/11/2014 22:38:40
#442669
tente, do jeitinho que está ai embaixo

Dim SQL As String
SQL = [Ô]SELECT * FROM Lancamento_despesa where Data_Vencimento <= now() and Pago =[ô]NÃO[ô][Ô]
Data1.RecordSource = SQL
Data1.Refresh





GIOGOMES 20/11/2014 22:51:57
#442670
Citação:

:
tente, do jeitinho que está ai embaixo

Dim SQL As String
SQL = [Ô]SELECT * FROM Lancamento_despesa where Data_Vencimento <= now() and Pago =[ô]NÃO[ô][Ô]
Data1.RecordSource = SQL
Data1.Refresh







não deu erro, só que ele ta pegando somente o dia do mês ex. 12/11/2014, filtra somente pelo 12
SINCLAIR 20/11/2014 22:52:36
#442671
Oi Colega...

Use o LIKE apenas quando quiser comparar trechos (por exemplo, se determinado nome tem [ô]SILVA[ô] no seu conteúdo. Se começar com *, será qualquer coisa que termine com [ô]SILVA[ô], se terminar com * será qualquer coisa que comece com SILVA. Se quiser trecho coloque * antes e depois.

Exemplos:
LIKE [ô]*SILVA[ô] entraria [ô]JOSé DA SILVA[ô], [ô]PEDRO DA SILVA[ô], [ô]ANTONIO LIMA E SILVA[ô] e assim por diante.

LIKE [ô]ANTONIO*[ô] entraria [ô]ANTONIO DE SOUZA[ô], [ô]ANTONIO DA SILVA[ô], [ô]ANTONIO ARMANDO DE ANDRADE[ô] e assim por diante

LIKE [ô]*SOUZA*[ô] entraria [ô]LUIS DE SOUZA[ô], [ô]ANDRE SOUZA BARRETO[ô], [ô]LUIS DE LIMA SOUZA[ô] e assim por diante.

No caso do seu campo pago, será sempre sim ou não, então não use o like. Use o igual (=), ficando assim select * from tabela where pago=[ô]NAO[ô] ao inves de select * from tabela where pago like [ô]NAO[ô].

O mesmo serve para datas. Use o = ou between, por exemplo, selecionar contas que tem vencimento entre 01/11/2014 e 30/11/2014 seria select * from tabela where dtvencto>=[ô]01/11/2014[ô] and dtvencto<=[ô]30/11/2014[ô] ou se preferir pode ser assim select * from tabela where dtvencto between [ô]01/11/2014[ô] and [ô]30/11/2014[ô].

Para pegar as contas com vencimento em outubro (mês passado) e não pagas seria assim select * from tabela where (dtvencto between [ô]01/10/2014[ô] and [ô]31/10/2014) and (pago=[ô]NAO[ô]).

Resolvi fazer um resuminho dos SQL que mais vais usar porque percebi que tiveste alguns posts neste sentido.

Um outra dica é usar uma data para identificar quando houve a quitação (um campo chamado dtquitacao por exemplo) ao invés de um campo string que tenha [Ô]não[Ô] ou [Ô]sim[Ô]. Motivo simples: futuramente poder emitir relatórios/consultas de contas pagas dentro de determinado período.

Tudo de bom.
SINCLAIR 20/11/2014 22:56:43
#442672
Só mais uma coisa...

Como estais usando access, de acordo com tuas configurações regionais, precisará colocar o caracter # antes e depois das datas, ficando assim [ô]#01/11/2014#[ô] e também verifique se seu banco não está configurado para MM/DD/AAAA (formato americano). Basta fazer testes com SQL usando datas no formato DD/MM/AAAA (formato europeu) e MM/DD/AAAA (formato americano).
MARCELO.TREZE 20/11/2014 23:01:10
#442673
troca o now() por date() e tente novamente
GIOGOMES 21/11/2014 15:19:27
#442684
Citação:

:
troca o now() por date() e tente novamente


ainda continua mesma coisa
SINCLAIR 21/11/2014 15:28:23
#442685
Colega, tenta assim

Pago = [Ô]NÃO[Ô]
Dim SQL As String
Dim Criterio As String
Criterio = Format(Date, [Ô]MM/dd/yyyy[Ô])
SQL = [Ô]SELECT * FROM Lancamento_despesa where Data_Vencimento [ô][Ô] <= Criterio & [Ô][ô] and Pago = [ô][Ô] & Pago & [Ô][ô][Ô]
Data1.RecordSource = SQL
Data1.Refresh


Note que variáveis Criterio e Pago serão inseridas entre aspas simples.
GIOGOMES 21/11/2014 18:23:57
#442687
Citação:

:
Colega, tenta assim

Pago = [Ô]NÃO[Ô]
Dim SQL As String
Dim Criterio As String
Criterio = Format(Date, [Ô]MM/dd/yyyy[Ô])
SQL = [Ô]SELECT * FROM Lancamento_despesa where Data_Vencimento [ô][Ô] <= Criterio & [Ô][ô] and Pago = [ô][Ô] & Pago & [Ô][ô][Ô]
Data1.RecordSource = SQL
Data1.Refresh


Note que variáveis Criterio e Pago serão inseridas entre aspas simples.


cara deu erro
MARCELO.TREZE 21/11/2014 19:26:54
#442689
Resposta escolhida
o problema realmente deve estar no formato de data vamos a outra maneira

Dim SQL As String
SQL = [Ô]SELECT * FROM Lancamento_despesa where Data_Vencimento <= #[Ô] & Format(Date,[Ô]mm/dd/yyyy[Ô]) & [Ô]# and Pago =[ô]NÃO[ô][Ô]
Data1.RecordSource = SQL
Data1.Refresh


tenta ai

GIOGOMES 22/11/2014 07:52:24
#442694
Citação:

:
o problema realmente deve estar no formato de data vamos a outra maneira

Dim SQL As String
SQL = [Ô]SELECT * FROM Lancamento_despesa where Data_Vencimento <= #[Ô] & Format(Date,[Ô]mm/dd/yyyy[Ô]) & [Ô]# and Pago =[ô]NÃO[ô][Ô]
Data1.RecordSource = SQL
Data1.Refresh


tenta ai



não gerou erro, mas filtra somente o dia.

Página 1 de 2 [15 registro(s)]
Tópico encerrado , respostas não são mais permitidas