Ir para conteúdo
Fórum Script Brasil
  • 0

Consulta especial entre data ....


Cybertrax

Pergunta

Seguinte tenho um sistema que eu quero q o código consulte se as mensalidades estão pagas...

O sistema é +/- assim....

Data Instalação: 01/01/2008

Data Atual: 30/04/2008

Qtd de Mensalidade: 4 (01/01/08 - 01/02/08 - 01/03/08 - 01/04/08)

Em outra tabela de "pagamentos" tenho os dados do pagamento.

Quero fazer uma busca no cliente pra ver se ele esta com todas as mensalidades pagas, ou seja:

Por exemplo:

Cliente: JOÃO DA SILVA

Data Instalação: 01/01/2008

Data Atual: 30/04/2008

Qtd de Mensalidade: 4 (01/01/08 - 01/02/08 - 01/03/08 - 01/04/08) = ATÉ A DATA DE HOJE, quando DER 01/05/08 (amanhã) SERÃO 5 MENSALIDADES.

Então com estes dados:

select * from pagamentos where idcliente = "&id&" and datpagamento= "01/01/08" and datpagamento= "01/02/08" and datpagamento= "01/03/08" and datpagamento= "01/04/08"...

Ou seja fazer essa busca mas de metódo dinamico pra eu não ter q digitar essas datas pra ele pesquisar....

Algum "Loop" pra consultar as datas que tem entre 01/01/2008 à 30/04/2008 ou seja 1 por mês, como citado acima.... 01/01/08 - 01/02/08 - 01/03/08 - 01/04/08....

Por favor me ajudem !!!!

Editado por Cybertrax
Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

no meu modo estas datas deveriam ficar em uma tabela separada

id_cliente - dia - mes - ano - pago (tipo sim /não)

ai faz o filtro verificando se ta pago ou não

... where pago=false ...

datainstalacao=01/01/2008

sql="select * from tabela where pago=false and mes between "&cint(month(datainstalacao))&" and "&cint(month(now))&" and ano="&year(datainstalacao)
set rs=conn.execute(sql)
if rs.eof then
response.write "Nenhuma parcela vencida"
else
response.write "Parcelas vencidas :<br>"
while not rs.eof
response.write rs("dia")&rs("mes")&rs("ano")&"<br>"
rs.movenext
wend
end if
rs.close
set rs=nothing

tendeu + ou - a ideia?

Link para o comentário
Compartilhar em outros sites

  • 0

Tah .. mas o problema que se o cliente não tiver pago não vai ter o registro nenhum...

Ou seja se ele n pagou então não tem nenhum registro pra estar SIM ou NÃO ....

Então essa solução não funciona pro meu caso !!!

Link para o comentário
Compartilhar em outros sites

  • 0

Mas então por que ter duas tabelas... olha só... você lança uma conta a receber, ou seja, ainda não paga, depois em outra tabela você lança a conta paga? mas pra que?

Faz assim, por ex.:

Tab. Contas Pagas / Não Pagas

ID | DATA | HISTÓRICO | TIPO | VALOR | SITUAÇÃO

no caso o campo SITUACAO tera valor apenas de SIM / NÃO...

quando voce for incluir contas a vencer incluirá automaticamente lá no "insertinto" com SITUAÇÃO = NÃO, daí ao invés de lançar uma conta paga, faz uma consulta das contas pelo nome do cliente e faz um update atraves do ID mudando o campo situação de NÃO pra SIM...

Essa forma te satisfaz? se sim é barbada de fazer o script... teu bd é em access? se for posso te dar uma mãzinha...

[]'s Notax

Link para o comentário
Compartilhar em outros sites

  • 0

Seria ddificil pra mim mudar o meu sistema pois já tem dados d 2 anos cadastrados no mesmo !!

Mas mesmo assim n é bem isso q eu tava querendo fika muito complexo ....

Olha só ....

alguém consegue fazer com o q código mostre as datas q existe entre esta data ou seja mês em mês...

ninguém ta entendendo bem o que eu estou querendo...... Mas veja os exemplos q fika mais fácil !!

Exemplo:

Data da 1º cobrança: 01/01/08

Data da Última cobrança: 01/04/08

Então serão 01/01/08 = 01/02/08 = 01/03/08 = 01/04/08 (4 meses)

Como mostrar essas datas acima automaticamente??

Como se fosse um parcelamento tipo ...

R$ 1.000,00 / 4 parcelas = 4 x R$ 250,00

Dia do vencimento = 15

Dia da 1º Parcela = 01/01/08

Carência = 0

Então serão:

15/01/08 = R$ 250,00

15/02/08 = R$ 250,00

15/03/08 = R$ 250,00

15/04/08 = R$ 250,00

+/- ISSO AE !! já vi sistemas q fazem isso mostrando o valor da parcela e a data de vencimento....

COMO EU FAÇO PRA MOSTRAR AS DATAS NOS SEUS RESPECTIVOS VENCIMENTOS, GERADO AUTOMATICAMENTE REFERENTE AO NUMERO DE PARCELA (No meu sistema será o número de mensalidade) !!

Descobrindo isso eu faço a solução !!

Editado por Cybertrax
Link para o comentário
Compartilhar em outros sites

  • 0

Sei lá... talvéz eu continue não entendo... será que é isso que você quer?

ComandoSQL = "select * from nome_tabela where " & nome_campo &  " and DATA BETWEEN #" & (campo_datainicial) & "# and #" & (_campo_datafinal) & "# ORDER BY DATA ASC"

se não for peço para explicar um pouquinho melhor...

[]'s Notax

Link para o comentário
Compartilhar em outros sites

  • 0

Seguinte:

Quero q faça a busca somente nas datas do vencimento, na quantidade de vezes do numero de parcelas (mensalidade) do cliente...

Exemplo:

DATAVENCIMENTO1 = 1º Mensalidade

SELECT * FROM PAGAMENTOS WHERE IDCLIENTE = "&ID&" AND DATAPAGAMENTO = "&DATAVENCIMENTO1&"

DATAVENCIMENTO2 = 2º Mensalidade

SELECT * FROM PAGAMENTOS WHERE IDCLIENTE = "&ID&" AND DATAPAGAMENTO = "&DATAVENCIMENTO2&"

DATAVENCIMENTO3 = 3º Mensalidade

SELECT * FROM PAGAMENTOS WHERE IDCLIENTE = "&ID&" AND DATAPAGAMENTO = "&DATAVENCIMENTO3&"

DATAVENCIMENTO4 = 4º Mensalidade

SELECT * FROM PAGAMENTOS WHERE IDCLIENTE = "&ID&" AND DATAPAGAMENTO = "&DATAVENCIMENTO4&"

Fazer essa consulta dinamicamnente o número de vezes que é o numero de parcelas (mensalidades) do cliente...

Por exemplo fazendo um "Loop", não sei fazer loop corretamente mas só pra ter uma ideia...

rs.PageSize = QTD DE MENSALIDADE ' O numero q vezes q o loop vai fazer

DATAVENCIMENTO1 = 1º Mensalidade

SELECT * FROM PAGAMENTOS WHERE IDCLIENTE = "&ID&" AND DATAPAGAMENTO = "&DATAVENCIMENTO1&"

rs.movenext

DATAVENCIMENTO2 = 2º Mensalidade

SELECT * FROM PAGAMENTOS WHERE IDCLIENTE = "&ID&" AND DATAPAGAMENTO = "&DATAVENCIMENTO2&"

rs.movenext

DATAVENCIMENTO3 = 3º Mensalidade

SELECT * FROM PAGAMENTOS WHERE IDCLIENTE = "&ID&" AND DATAPAGAMENTO = "&DATAVENCIMENTO3&"

rs.movenext

DATAVENCIMENTO4 = 4º Mensalidade

SELECT * FROM PAGAMENTOS WHERE IDCLIENTE = "&ID&" AND DATAPAGAMENTO = "&DATAVENCIMENTO=4&"

rs.movenext

***************************************

Fico no aguardo !!

Editado por Cybertrax
Link para o comentário
Compartilhar em outros sites

  • 0

a questão é:

você terá 2 tabelas para que???

1 para cadastro dos clientes

2 para cadastro de prestações pagas e não pagas...

se forem mensalidades ai, você tem q fazer ele proprio cadastrar novas parcelas em um ponto de acesso comun... no login do sistema...

Link para o comentário
Compartilhar em outros sites

  • 0

Eu entendi o que você quer... e a solução é muito simples...

Quero fazer uma busca no cliente pra ver se ele esta com todas as mensalidades pagas, ou seja:

Por exemplo:

Cliente: JOÃO DA SILVA

Data Instalação: 01/01/2008

Data Atual: 30/04/2008

Qtd de Mensalidade: 4 (01/01/08 - 01/02/08 - 01/03/08 - 01/04/08) = ATÉ A DATA DE HOJE, quando DER 01/05/08 (amanhã) SERÃO 5 MENSALIDADES.

Então com estes dados:

select * from pagamentos where idcliente = "&id&" and datpagamento= "01/01/08" and datpagamento= "01/02/08" and datpagamento= "01/03/08" and datpagamento= "01/04/08"...

pra fazer isso de forma dinamica basta voce fazer esse select atraves do id usando between cdonforme eu mencionei com datas absurdas... por exemplo: entre 01/01/1900 e 31/12/3000, desta forma você terá desde o 1 pagamento até o último... simples assim... não precisa loops nem nada disso...

o select usando o between eu já mostrei ai em cima... agora é so fazê-lo... no seu caso deve ficar assim:

ComandoSQL = "select * from pagamentos where idcliente = "&id&" and datpagamento BETWEEN #" & 01/01/1900 & "# and #" & 31/12/3000 & "# ORDER BY DATA ASC"

desta forma resolve porque antes da data da instalação não vai ter lançamento nenhum, assim como tb não vai ter lançamento nenhum depois da última data de pagamento...

era isso?

[]'s Notax

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...