[VAZA] 0 Denunciar post Postado Outubro 25, 2005 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
thalesoli 0 Denunciar post Postado Outubro 25, 2005 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
[VAZA] 0 Denunciar post Postado Outubro 26, 2005 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
[VAZA] 0 Denunciar post Postado Outubro 26, 2005 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
wander_informatica 0 Denunciar post Postado Novembro 18, 2005 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