Fórum Select 80¬ completo! Quem completa???? #188317

13/10/2003

0

Ola colegas

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

Macario

Responder

Posts

13/10/2003

Macario

como eu encaixo esse select dentro do select acima?


[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

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar