SQL CONTAS VENCIDAS
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
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
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
Citação::
tente, do jeitinho que está ai embaixoDim 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
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.
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.
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).
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).
troca o now() por date() e tente novamente
Citação::
troca o now() por date() e tente novamente
ainda continua mesma coisa
Colega, tenta assim
Note que variáveis Criterio e Pago serão inseridas entre aspas simples.
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.
Citação::
Colega, tenta assimPago = [Ô]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
o problema realmente deve estar no formato de data vamos a outra maneira
tenta ai
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
Citação::
o problema realmente deve estar no formato de data vamos a outra maneiraDim 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.
Tópico encerrado , respostas não são mais permitidas