Ver Mensaje Individual
  #5  
Antiguo 30-04-2008
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Reputación: 21
Paulao Va por buen camino
Bueno, resolvi asi: Yo tenia um While con la tabla pricipal, entonces en cada registro, yo hizo un otro select usando las llaves del registro principal. Hizo otro select y hizo mi impression dentro deste while. Abajo mi codigo: Se que pude estar mas limpio mi codigo, pero estoy sin tiempo para hacer un codigo mejor. Quando quitar la instalacion en todas las filiales, y yo poder dormir por lo menos, 6 horas, entoces voy a mejorar el codigo, pero fue el que yo tuvo que hacer las prisas.

Cita:
var
lin,sParc, nRec:Integer;
sCupom,
sForma: string;
bNovaLinha,
bImprimeTitulo,bDevDoa: Boolean;
nVal_Parcouble;
cdsGeral: TClientDataSet;
begin
cdsGeral := TClientDataSet.Create(nil);
cdsGeral.RemoteServer := DM_Principal.scConsulta;
cdsGeral.ProviderName := 'dspTB_SAC_NF_PAGAMENTO';

sForma := '';
sParc := 0;
nVal_Parc := 0;
nRec := 0;

bNovaLinha := False;
bImprimeTitulo := False;
bDevDoa := False;

vTotal_Dia := 0;
vTotal_Geral := 0;
lin := 0;
DM_Principal.CDS_CNS_VENDAS.First;
while not DM_Principal.CDS_CNS_VENDAS.Eof do
begin
inc(lin);
sCupom := DM_Principal.CDS_CNS_VENDAS.FieldByName('NU_NF').AsString;
if DM_Principal.CDS_CNS_AUX.Locate('NU_NF;NU_CX;SR_NF',VarArrayOf([
DM_Principal.CDS_CNS_VENDAS.FieldByName('NU_NF').AsString,
DM_Principal.CDS_CNS_VENDAS.FieldByName('NU_CX').AsString,
DM_Principal.CDS_CNS_VENDAS.FieldByName('SR_NF').AsString]), []) then
begin
sForma := DM_Principal.CDS_CNS_AUX.FieldByName('DESCRICAO').AsString;
sParc := DM_Principal.CDS_CNS_AUX.FieldByName('QT_PARC').AsInteger;
nVal_Parc := DM_Principal.CDS_CNS_AUX.FieldByName('VL_PAG').AsFloat;
end;

with cdsGeral do
begin
Close;
CommandText :=
' SELECT ' +
' PAGTO.NU_NF,PAGTO.NU_CX, ' +
' PAGTO.SR_NF,PAGTO.VL_PAG, ' +
' FORMA.DESCRICAO ' +
' FROM ' +
' TB_SAC_NF_PAGAMENTO PAGTO INNER JOIN TB_SAC_FORMA_PAGTO FORMA ' +
' ON(FORMA.CD_F_PAG = PAGTO.CD_F_PAG) ' +
' WHERE ' +
' PAGTO.NU_NF = ' + DM_Principal.CDS_CNS_VENDAS.FieldByName('NU_NF').AsString + ' AND ' +
' PAGTO.NU_CX = ' + DM_Principal.CDS_CNS_VENDAS.FieldByName('NU_CX').AsString + ' AND ' +
' PAGTO.SR_NF = ' + QuotedStr(DM_Principal.CDS_CNS_VENDAS.FieldByName('SR_NF').AsString);
Open;
end;

if (cdsGeral.IsEmpty) and (DM_Principal.CDS_CNS_VENDAS.RecordCount > 0) then
begin
//Imprime transferencias e doacoes
bDevDoa := True;
if sParc > 0 then
Writeln(prn,AjustaNum(DM_Principal.CDS_CNS_VENDAS.FieldByName('NU_BOL').AsString,6) +
' ' + AjustaNum(DM_Principal.CDS_CNS_VENDAS.FieldByName('NU_NF').AsString,6) +
' ' + AjustaNum(DM_Principal.CDS_CNS_VENDAS.FieldByName('SR_NF').AsString,3) +
' ' + AjustaNum(FormatFloat('0.00',DM_Principal.CDS_CNS_VENDAS.FieldByName('VL_BRUTO').AsFloat),11) +
' ' + AjustaStr(DM_Principal.CDS_CNS_VENDAS.FieldByName('ST_CANC').AsString,9) +
' ' + AjustaNum(DM_Principal.CDS_CNS_VENDAS.FieldByName('CD_FUNC').AsString,8) +
' ' + AjustaStr(cdsGeral.FieldByname('DESCRICAO').AsString,18) + '[' + AjustaNum(IntToStr(sParc),1)+ 'X]' +
AjustaNum(FormatFloat('0.00',cdsGeral.FieldByName('VL_PAG').AsFloat),9))
else
Writeln(prn,AjustaNum(DM_Principal.CDS_CNS_VENDAS.FieldByName('NU_BOL').AsString,6) +
' ' + AjustaNum(DM_Principal.CDS_CNS_VENDAS.FieldByName('NU_NF').AsString,6) +
' ' + AjustaNum(DM_Principal.CDS_CNS_VENDAS.FieldByName('SR_NF').AsString,3) +
' ' + AjustaNum(FormatFloat('0.00',DM_Principal.CDS_CNS_VENDAS.FieldByName('VL_BRUTO').AsFloat),11) +
' ' + AjustaStr(DM_Principal.CDS_CNS_VENDAS.FieldByName('ST_CANC').AsString,9) +
' ' + AjustaNum(DM_Principal.CDS_CNS_VENDAS.FieldByName('CD_FUNC').AsString,8) +
' ' + AjustaStr(cdsGeral.FieldByname('DESCRICAO').AsString,18) +
' ' + AjustaNum(FormatFloat('0.00',cdsGeral.FieldByName('VL_PAG').AsFloat),9));
end;

while not cdsGeral.Eof do
begin
if cdsGeral.RecordCount > 1 then
begin
bNovaLinha := True;
if cdsGeral.RecNo = 1 then
bImprimeTitulo := True
else
bImprimeTitulo := False;
end;

if not bNovaLinha then
begin
if sParc > 0 then
Writeln(prn,AjustaNum(DM_Principal.CDS_CNS_VENDAS.FieldByName('NU_BOL').AsString,6) +
' ' + AjustaNum(DM_Principal.CDS_CNS_VENDAS.FieldByName('NU_NF').AsString,6) +
' ' + AjustaNum(DM_Principal.CDS_CNS_VENDAS.FieldByName('SR_NF').AsString,3) +
' ' + AjustaNum(FormatFloat('0.00',DM_Principal.CDS_CNS_VENDAS.FieldByName('VL_BRUTO').AsFloat),11) +
' ' + AjustaStr(DM_Principal.CDS_CNS_VENDAS.FieldByName('ST_CANC').AsString,9) +
' ' + AjustaNum(DM_Principal.CDS_CNS_VENDAS.FieldByName('CD_FUNC').AsString,8) +
' ' + AjustaStr(cdsGeral.FieldByname('DESCRICAO').AsString,18) + '[' + AjustaNum(IntToStr(sParc),1)+ 'X]' +
AjustaNum(FormatFloat('0.00',cdsGeral.FieldByName('VL_PAG').AsFloat),9))
else
Writeln(prn,AjustaNum(DM_Principal.CDS_CNS_VENDAS.FieldByName('NU_BOL').AsString,6) +
' ' + AjustaNum(DM_Principal.CDS_CNS_VENDAS.FieldByName('NU_NF').AsString,6) +
' ' + AjustaNum(DM_Principal.CDS_CNS_VENDAS.FieldByName('SR_NF').AsString,3) +
' ' + AjustaNum(FormatFloat('0.00',DM_Principal.CDS_CNS_VENDAS.FieldByName('VL_BRUTO').AsFloat),11) +
' ' + AjustaStr(DM_Principal.CDS_CNS_VENDAS.FieldByName('ST_CANC').AsString,9) +
' ' + AjustaNum(DM_Principal.CDS_CNS_VENDAS.FieldByName('CD_FUNC').AsString,8) +
' ' + AjustaStr(cdsGeral.FieldByname('DESCRICAO').AsString,18) +
' ' + AjustaNum(FormatFloat('0.00',cdsGeral.FieldByName('VL_PAG').AsFloat),9));
end
else
begin
if bImprimeTitulo then
begin
if sParc > 0 then
Writeln(prn,AjustaNum(DM_Principal.CDS_CNS_VENDAS.FieldByName('NU_BOL').AsString,6) +
' ' + AjustaNum(DM_Principal.CDS_CNS_VENDAS.FieldByName('NU_NF').AsString,6) +
' ' + AjustaNum(DM_Principal.CDS_CNS_VENDAS.FieldByName('SR_NF').AsString,3) +
' ' + AjustaNum(FormatFloat('0.00',DM_Principal.CDS_CNS_VENDAS.FieldByName('VL_BRUTO').AsFloat),11) +
' ' + AjustaStr(DM_Principal.CDS_CNS_VENDAS.FieldByName('ST_CANC').AsString,9) +
' ' + AjustaNum(DM_Principal.CDS_CNS_VENDAS.FieldByName('CD_FUNC').AsString,8) +
' ' + AjustaStr(cdsGeral.FieldByname('DESCRICAO').AsString,18) + '[' + AjustaNum(IntToStr(sParc),1)+ 'X]' +
AjustaNum(FormatFloat('0.00',cdsGeral.FieldByName('VL_PAG').AsFloat),9))
else
Writeln(prn,AjustaNum(DM_Principal.CDS_CNS_VENDAS.FieldByName('NU_BOL').AsString,6) +
' ' + AjustaNum(DM_Principal.CDS_CNS_VENDAS.FieldByName('NU_NF').AsString,6) +
' ' + AjustaNum(DM_Principal.CDS_CNS_VENDAS.FieldByName('SR_NF').AsString,3) +
' ' + AjustaNum(FormatFloat('0.00',DM_Principal.CDS_CNS_VENDAS.FieldByName('VL_BRUTO').AsFloat),11) +
' ' + AjustaStr(DM_Principal.CDS_CNS_VENDAS.FieldByName('ST_CANC').AsString,9) +
' ' + AjustaNum(DM_Principal.CDS_CNS_VENDAS.FieldByName('CD_FUNC').AsString,8) +
' ' + AjustaStr(cdsGeral.FieldByname('DESCRICAO').AsString,18) +
' ' + AjustaNum(FormatFloat('0.00',cdsGeral.FieldByName('VL_PAG').AsFloat),9));
end
else
Writeln(prn, RelRepStr(' ', 49) + AjustaStr(cdsGeral.FieldByname('DESCRICAO').AsString,18) +
' ' + AjustaNum(FormatFloat('0.00',cdsGeral.FieldByName('VL_PAG').AsFloat),9));
end;

cdsGeral.Next;

if cdsGeral.Eof then
Writeln(prn, RelRepStr('-', 80));

bNovaLinha := False;
end;//Fim do while do cdsGeral

DM_Principal.CDS_CNS_VENDAS.Next;

if (DM_Principal.CDS_CNS_VENDAS.Eof) and (bDevDoa) then
begin
Writeln(prn, RelRepStr('-', 80));
bDevDoa := False;
end;


if lin > 56 then
begin
Cabecalho;
end;
end;//Fim do while principal
FreeAndNil(cdsGeral);
end;
Responder Con Cita