Fórum Select 80¬ completo! Quem completa???? #188317
13/10/2003
0
Ola colegas
Esse select abaixo esta quase completo
[color=green:0909e4bcff]
O que esotu precisando agora é obter
o numero de dias em atraso de cada nota
se esta tiver sido paga em atraso.
Os dados serao obtidos das tabelas ArqDoCR e ArqMCoc
os campos:
ArqDoCR
EMP=COD. EMPRESA
DOC=NUMERO DO DOCUMENTO
COC=CODIGO DO CLIENTE
DAT=DATA DE EMISSAO
VEN=DATA DE VENCIMENTO
NFI=NUMERO DA NOTA FISCAL
ArqDocR
MVALOR=VALOR DO DOCUMENTO
MCHAVE=EMP+COC+DOC // esse campo é composto por esses outros
Como deve ser a referencia para verificar se cada nota ja esta paga em dia ou foi paga com atraso?
Esse select abaixo esta quase completo
[color=green:0909e4bcff]
with QryTemp do
begin
Close;
DatabaseName := DM.TArqEmpr.DatabaseName;
SQL.Clear;
SQL.Add(´select C.v1 as Cod,´);
SQL.Add(´ C.v2 as Cliente,´);
SQL.Add(´ C.v4 as Municipio,´);
SQL.Add(´ C.v5 as UF,´);
SQL.Add(´ C.v12 as Contato,´);
SQL.Add(´ C.v13 as Telefone,´);
SQL.Add(´ R.v1 as codrep,´);
SQL.Add(´ R.v2 as Representante,´);
SQL.Add(´ C.Datacad,´);
SQL.Add(´ N.nnf as Nota,´);
SQL.Add(´ N.dnf as data,´);
SQL.Add(´ sum (N.vlr * N.qte + n.ipi+n.encpro+n.encipi) as Valor,´);
SQL.Add(´ max (:dia - (cast( (substring (n.dnf from 1 for 2)) +´´/´´+´);
SQL.Add(´ (substring (n.dnf from 4 for 2)) +´´/´´+´);
SQL.Add(´ (substring (n.dnf from 7 for 4)) as date))) as inativo´);
SQL.Add(´from arqclie C,´);
SQL.Add(´ arqprnf N,´);
SQL.Add(´ arqrepr R´);
SQL.Add(´where (C.v1 = N.ncl)´);
SQL.Add(´ and (R.v1 = N.nre)´);
SQL.Add(´ and (N.nnf = (select max(NF.nnf)´);
SQL.Add(´ from arqprnf NF´);
SQL.Add(´ where NF.ncl = C.v1 and nf.nre = r.v1))´);
SQL.Add(´ and (C.v1 between :cli1 and :cli2)´);
SQL.Add(´ and (N.nre between :rep1 and :rep2)´);
SQL.Add(´ and (:dia - (cast( (substring (n.dnf from 1 for 2)) +´´/´´+´);
SQL.Add(´ (substring (n.dnf from 4 for 2)) +´´/´´+´);
SQL.Add(´ (substring (n.dnf from 7 for 4)) as date))) >= :inativo´);
SQL.Add(´Group by C.v1, C.v2, C.v4, C.v5, C.v12, C.v13,R.v1, R.v2, C.datacad, n.nnf , n.dnf´);
SQL.Add(´order by R.v1,´);
SQL.Add(´ C.v1´);
ParamByName(´cli1´).AsString := mdtCliIni.Text;
ParamByName(´cli2´).AsString := mdtCliFim.Text;
ParamByName(´rep1´).AsString := mdtRepIni.Text;
ParamByName(´rep2´).AsString := mdtRepFim.Text;
ParamByName(´dia´).AsDate := hoje;
ParamByName(´inativo´).AsInteger := StrToInt(mdtInativo.Text);
Open;
end;
[/color:0909e4bcff]O que esotu precisando agora é obter
o numero de dias em atraso de cada nota
se esta tiver sido paga em atraso.
Os dados serao obtidos das tabelas ArqDoCR e ArqMCoc
os campos:
ArqDoCR
EMP=COD. EMPRESA
DOC=NUMERO DO DOCUMENTO
COC=CODIGO DO CLIENTE
DAT=DATA DE EMISSAO
VEN=DATA DE VENCIMENTO
NFI=NUMERO DA NOTA FISCAL
ArqDocR
MVALOR=VALOR DO DOCUMENTO
MCHAVE=EMP+COC+DOC // esse campo é composto por esses outros
Como deve ser a referencia para verificar se cada nota ja esta paga em dia ou foi paga com atraso?
Macario
Curtir tópico
+ 0
Responder
Posts
13/10/2003
Macario
como eu encaixo esse select dentro do select acima?
[color=green:6ba73a8080]
com esse select eu consigo o numero de dias de atraso mas preciso dele junto com o outro alguem tem uma sugestao????
[color=green:6ba73a8080]
select
m.mchave, cr.doc, cr.coc, cr.dat, cr.ven,m.datpag, m.mvalor, cr.vlr, cr.vlp,
((cast( (substring (m.datpag from 1 for 2)) +´/´+
(substring (m.datpag from 4 for 2)) +´/´+
(substring (m.datpag from 7 for 4)) as date)) -
(cast( (substring (cr.ven from 1 for 2)) +´/´+
(substring (cr.ven from 4 for 2)) +´/´+
(substring (cr.ven from 7 for 4)) as date))) as atraso
from
arqdocr cr, arqmcoc m
where mchave = (cr.emp+cr.coc+cr.doc) and
((cast( (substring (m.datpag from 1 for 2)) +´/´+
(substring (m.datpag from 4 for 2)) +´/´+
(substring (m.datpag from 7 for 4)) as date)) -
(cast( (substring (cr.ven from 1 for 2)) +´/´+
(substring (cr.ven from 4 for 2)) +´/´+
(substring (cr.ven from 7 for 4)) as date))) > 15
[/color:6ba73a8080]com esse select eu consigo o numero de dias de atraso mas preciso dele junto com o outro alguem tem uma sugestao????
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)