então Isaque estou obtendo os valores a partir de uma stored procedure do SQL SERVER o bloco C170 basicamente fica assim:
function TFrmPisCofins.geracaoBlocoC: boolean;
begin
try
begin
f_OpenQuery(false, FrDmGR.QyConsulta2, 'exec COFINSPISC '+edFilial.Text+' ,'
+QuotedStr(formatdatetime('yyyy-mm-dd',dtpinicial.Date))+' , '
+QuotedStr(formatdatetime('yyyy-mm-dd',dtpfinal.Date)));
if FrDmGR.QyConsulta2.IsEmpty then
begin
result := true;
exit;
end;
with CompPisCofins.Bloco_C do
begin
with RegistroC001New do
begin
IND_MOV := FrDmGR.QyConsulta2.FieldByName('ind_mov').Value;
FrDmGR.QyConsulta2.Next
end;
//C010 - Identificação do Estabelecimento
with RegistroC010New do
begin
CNPJ := FrDmGR.QyConsulta2.FieldByName('cnpj').Value;
IND_ESCRI := FrDmGR.QyConsulta2.FieldByName('ind_escri').Value;
FrDmGR.QyConsulta2.Next;
end;
while FrDmGR.QyConsulta2.FieldByName('reg').AsString = 'C100' do
begin
try
begin
with RegistroC100New do
begin
//REG := FrDmGR.QyConsulta2.FieldByName('REG').Value;
IND_OPER := FrDmGR.QyConsulta2.FieldByName('IND_OPER').Value;
IND_EMIT := FrDmGR.QyConsulta2.FieldByName('IND_EMIT').Value;
COD_PART := FrDmGR.QyConsulta2.FieldByName('COD_PART').Value;
COD_MOD := FrDmGR.QyConsulta2.FieldByName('COD_MOD').Value;
COD_SIT := FrDmGR.QyConsulta2.FieldByName('COD_SIT').Value;
SER := FrDmGR.QyConsulta2.FieldByName('SER').Value;
NUM_DOC := FrDmGR.QyConsulta2.FieldByName('NUM_DOC').Value;
CHV_NFE := FrDmGR.QyConsulta2.FieldByName('CHV_NFE').Value;
DT_DOC := FrDmGR.QyConsulta2.FieldByName('DT_DOC').AsString;
DT_E_S := FrDmGR.QyConsulta2.FieldByName('DT_E_S').AsString;
VL_DOC := FrDmGR.QyConsulta2.FieldByName('VL_DOC').Value;
IND_PGTO := FrDmGR.QyConsulta2.FieldByName('IND_PGTO').Value;
VL_DESC := FrDmGR.QyConsulta2.FieldByName('VL_DESC').Value;
VL_ABAT_NT := FrDmGR.QyConsulta2.FieldByName('VL_ABAT_NT').Value;
VL_MERC := FrDmGR.QyConsulta2.FieldByName('VL_MERC').Value;
IND_FRT := FrDmGR.QyConsulta2.FieldByName('IND_FRT').Value;
VL_FRT := FrDmGR.QyConsulta2.FieldByName('VL_FRT').Value;
VL_SEG := FrDmGR.QyConsulta2.FieldByName('VL_SEG').Value;
VL_OUT_DA := FrDmGR.QyConsulta2.FieldByName('VL_OUT_DA').Value;
VL_BC_ICMS := FrDmGR.QyConsulta2.FieldByName('VL_BC_ICMS').Value;
VL_ICMS := FrDmGR.QyConsulta2.FieldByName('VL_ICMS').Value;
VL_BC_ICMS_ST := FrDmGR.QyConsulta2.FieldByName('VL_BC_ICMS_ST').Value;
VL_ICMS_ST := FrDmGR.QyConsulta2.FieldByName('VL_ICMS_ST').Value;
VL_IPI := FrDmGR.QyConsulta2.FieldByName('VL_IPI').Value;
VL_PIS := FrDmGR.QyConsulta2.FieldByName('VL_PIS').Value;
VL_COFINS := FrDmGR.QyConsulta2.FieldByName('VL_COFINS').Value;
VL_PIS_ST := FrDmGR.QyConsulta2.FieldByName('VL_PIS_ST').Value;
VL_COFINS_ST := FrDmGR.QyConsulta2.FieldByName('VL_COFINS_ST').Value;
end;
end;
except
on E : Exception do
ShowMessage(E.ClassName+' error raised, with message : '+E.Message);
end;
FrDmGR.QyConsulta2.Next;
while FrDmGR.QyConsulta2.FieldByName('reg').AsString = 'C170' do
begin
try
begin
with RegistroC170New do
begin
//REG := FrDmGR.QyConsulta2.FieldByName('reg').Value;
NUM_ITEM := FrDmGR.QyConsulta2.FieldByName('num_item').Value;
COD_ITEM := FrDmGR.QyConsulta2.FieldByName('cod_item').Value;
DESCR_COMPL := FrDmGR.QyConsulta2.FieldByName('descr_compl').Value;
QTD := FrDmGR.QyConsulta2.FieldByName('qtd').Value;
UNID := FrDmGR.QyConsulta2.FieldByName('unid').Value;
VL_ITEM := FrDmGR.QyConsulta2.FieldByName('vl_item').Value;
VL_DESC := FrDmGR.QyConsulta2.FieldByName('vl_desc').Value;
IND_MOV := FrDmGR.QyConsulta2.FieldByName('ind_mov').Value;
CST_ICMS := FrDmGR.QyConsulta2.FieldByName('cst_icms').Value;
CFOP := FrDmGR.QyConsulta2.FieldByName('cfop').Value;
COD_NAT := FrDmGR.QyConsulta2.FieldByName('cod_nat').Value;
VL_BC_ICMS := FrDmGR.QyConsulta2.FieldByName('vl_bc_icms').Value;
ALIQ_ICMS := FrDmGR.QyConsulta2.FieldByName('aliq_icms').Value;
VL_ICMS := FrDmGR.QyConsulta2.FieldByName('vl_icms').Value;
VL_BC_ICMS_ST := FrDmGR.QyConsulta2.FieldByName('vl_bc_icms_st').Value;
ALIQ_ST := FrDmGR.QyConsulta2.FieldByName('aliq_st').Value;
VL_ICMS_ST := FrDmGR.QyConsulta2.FieldByName('vl_icms_st').Value;
IND_APUR := FrDmGR.QyConsulta2.FieldByName('ind_apur').Value;
CST_IPI := FrDmGR.QyConsulta2.FieldByName('cst_ipi').Value;
COD_ENQ := FrDmGR.QyConsulta2.FieldByName('cod_enq').Value;
VL_BC_IPI := FrDmGR.QyConsulta2.FieldByName('vl_bc_ipi').Value;
ALIQ_IPI := FrDmGR.QyConsulta2.FieldByName('aliq_ipi').Value;
VL_IPI := FrDmGR.QyConsulta2.FieldByName('vl_ipi').Value;
CST_PIS := FrDmGR.QyConsulta2.FieldByName('cst_pis').Value;
VL_BC_PIS := FrDmGR.QyConsulta2.FieldByName('vl_bc_pis').Value;
ALIQ_PIS_PERC := FrDmGR.QyConsulta2.FieldByName('aliq_pis').Value;
QUANT_BC_PIS := FrDmGR.QyConsulta2.FieldByName('quant_bc_pis').Value;
ALIQ_PIS_R := FrDmGR.QyConsulta2.FieldByName('aliq_pis_quant').Value;
VL_PIS := FrDmGR.QyConsulta2.FieldByName('vl_pis').Value;
CST_COFINS := FrDmGR.QyConsulta2.FieldByName('cst_cofins').Value;
VL_BC_COFINS := FrDmGR.QyConsulta2.FieldByName('vl_bc_cofins').Value;
ALIQ_COFINS_PERC := FrDmGR.QyConsulta2.FieldByName('aliq_cofins').Value;
QUANT_BC_COFINS := FrDmGR.QyConsulta2.FieldByName('quant_bc_cofins').Value;
ALIQ_COFINS_R := FrDmGR.QyConsulta2.FieldByName('aliq_cofins_quant').Value;
VL_COFINS := FrDmGR.QyConsulta2.FieldByName('vl_cofins').Value;
COD_CTA := FrDmGR.QyConsulta2.FieldByName('cod_cta').Value;
end;
end;
except
on E : Exception do
ShowMessage(E.ClassName+' error raised, with message : '+E.Message);
end;
FrDmGR.QyConsulta2.Next;
end;
end;
while FrDmGR.QyConsulta2.FieldByName('reg').AsString = 'C400' do
begin
with RegistroC400New do
begin
//REG := FrDmGR.QyConsulta2.FieldByName('REG').Value;
COD_MOD := FrDmGR.QyConsulta2.FieldByName('COD_MOD').Value;
ECF_MOD := FrDmGR.QyConsulta2.FieldByName('ECF_MOD').Value;
ECF_FAB := FrDmGR.QyConsulta2.FieldByName('ECF_FAB').Value;
ECF_CX := FrDmGR.QyConsulta2.FieldByName('ECF_CX').Value;
end;
FrDmGR.QyConsulta2.Next;
while FrDmGR.QyConsulta2.FieldByName('reg').AsString = 'C405' do
begin
with RegistroC405New do
begin
//REG := FrDmGR.QyConsulta2.FieldByName('REG').Value;
DT_DOC := FrDmGR.QyConsulta2.FieldByName('DT_DOC').Value;
CRO := FrDmGR.QyConsulta2.FieldByName('CRO').Value;
CRZ := FrDmGR.QyConsulta2.FieldByName('CRZ').Value;
NUM_COO_FIN := FrDmGR.QyConsulta2.FieldByName('NUM_COO_FIN').Value;
GT_FIN := FrDmGR.QyConsulta2.FieldByName('GT_FIN').Value;
VL_BRT := FrDmGR.QyConsulta2.FieldByName('VL_BRT').Value;
end;
FrDmGR.QyConsulta2.Next
end;
end;
end;
result := true;
end;
except
result := false;
end;
end;