Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

[VAZA]

O bixo pega nesse SQL

Recommended Posts

Pessoal...

é o seguinte

tenho um programa que existe um cadastro de clientes e um cadastro de boletos bancários.

 

 

vou explicar o programa.

No cadastro de clientes, existe um dia de pagamento, que é o melhor dia para o pagamento pagar os boletos enviados a ele.

esses dias vai de 01 há 31 é claro.

 

O que eu quero é o seguinte.

Eu quero que o sistema avise 15 dias antes os boletos que tem que ser enviados. por exemplo se hoje é dia 25, ele tem que me mostrar os boletos que tem que ser enviados no dia 09 para assim eu enviar os boletos para os clientes.

 

Só que é o seguinte, eu tenho que ver se o boleto para o dia 09 desse mes ja foi cadastrado...

se ja foi cadastrado, então não mostra. Se ainda não foi cadastrado, o sistema tem que me mostrar para assim eu enviar o boleto.

 

Eu tentei algo assim só que ainda não ta dando certo:

 

SELECT c.*, b.* FROM clientes c left outer join boletos_bancarios b on (c.id = b.id_cliente) Where (c.dia_pagamento between 01 and 25 ) and b.numero_controle IS NULL or b.numero_controle = ''

 

Esse número controle é o seguinte. No cadastro de boletos tem um campo chamado numero de controle.

Após a pessoa cadastrar o boleto e mandar fazer o boleto bancário, o boleto gera um número de controle para nosso controle interno.

Eu pensei assim: se o numero_controle esta vazio, é que o boleto bancário ainda não foi cadastrado.

 

Mas se quiserem apagar esse sql e tiverem uma logíca melhor que a minha...melhor

:)

 

ta embaçado..to tentando isso há vários dias.

Falow

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta essa abaixo

 

tipo assimSELECT c.*, b.* FROM clientes c left outer join boletos_bancarios b on (c.id = b.id_cliente)Where not ((c.dia_pagamento between Extract(Day from 'Today') and 							   Extract(Day from ('today' + 15)) and 	  ((b.numero_controle IS NULL) or (b.numero_controle = '')))

Compartilhar este post


Link para o post
Compartilhar em outros sites

aewweu tentei assim:SELECT c.*, b.*FROM clientes c left outer join boletos_bancarios b on (c.id = b.id_cliente)Where not ((c.dia_pagamento between Extract(Day from '2005-10-26') and Extract(Day from ('2005-10-26' + 15)) and ((b.numero_controle IS NULL) or (b.numero_controle = '' )))só que é o seguinte...ele ta me retornando dados da tabela boletos bancários e com o numero_controle diferente e igual a NULL e ''e na verdade eu quero puxar só os dados da tabela clientes.Por exemplo:o cliente Maurício tem no dia_pagemento dele o dia 10 então todo dia 10 ele tem que pagar os boletos bancários dele.eu quero que o programa me avise 15 dias antes que eu tenho que cadastrar um boleto para ele com o dia 10 do mes que vem.(Caso o dia_pagamento dele seja 25 por exemplo, a partir do dia 10, o programa terá que me avisar que eu tenho que criar um boleto para ele para o dia 25 DESTE MES).Só que o programa tem que me mostrar isso caso não há boletos deste cliente cadastrado para o dia 10.Se ja foi cadastrado boleto deste cliente para o dia 10, nem avisa pois o boleto ja esta pronto.Muito obrigado pela ajudaFalowwt+

Compartilhar este post


Link para o post
Compartilhar em outros sites

ah..eu tentei assim também, o que parece bem logico:SELECT c.*, b.*FROM clientes c left outer join boletos_bancarios b on (c.id = b.id_cliente)Where not ((c.dia_pagamento between Extract(Day from '2005-10-26') and Extract(Day from ('2005-10-26' + 15)) and ((b.data_vencimento <> '2005-11-10') and (b.data_vencimento >= '2005-10-26')and (b.data_vencimento <= '2005-11-10'))))só que ainda to pegando dados nada a ver...to pegando dados que é < do que '2005-10-26' sendo que to pedindo para pegar maior, to pegando dados > do que '2005-11-10' sendo que eu pedi para pegar menor...vixi...nao sei pq ta acontecendo isso :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, vamos com muita calma....query1.close;query1.sql.clear;query1.sql.add(' SELECT c.*, b.* ');query1.sql.add(' FROM clientes c ');query1.sql.add(' left outer join boletos_bancarios b ');query1.sql.add(' on (c.id = b.id_cliente) '); query1.sql.add(' Where (c.dia_pagamento = :DIA) '); // dia do vencimentoquery1.sql.add(' and (b.data_vencimento >= :DATA1) '); // inicio do periodo desejadoquery1.sql.add(' and (b.data_vencimento <= :DATA2) '); // fim do mesmo...query1.sql.add(' and ( ( b.numero_controle IS NULL) '); // nao emitidos ainda...query1.sql.add(' or (b.numero_controle = '''' ) ');query1.sql.add(' ) ');query1.FieldByName('DIA' ).AsInteger := Variavel_DiaDesejado;query1.FieldByName('DATA1').AsDateTime := StrToDate(edDataInicial.text);query1.FieldByName('DATA2').AsDateTime := StrToDate(edDataFinal.text);query1.open;Sera que entendi o que desejas?Wander...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.