Para resolvermos isto, eu criei um metodo baseado em um arquivo XML que pode ser perfeitamente importado para dentro de um ClientDataset e, de lá, lermos cada campo e inserir os dados conforme o valor do campo.
Passo 1) Crie o arquivo .XML com base no modelo abaixo:
sXMLHead := TempDir +
format('%d.xml',[iIDPrj]);
AssignFile(fXmlDataPacket, sXMLHead);
Rewrite(fXmlDataPacket);
WriteLn(fXmlDataPacket, '<?xml version="1.0" standalone="yes"?>');
WriteLn(fXmlDataPacket, '<DATAPACKET Version="2.0"><METADATA><FIELDS>');
WriteLn(fXmlDataPacket, '<FIELD attrname="BDIPRJSOBRETOTAL" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="BDIPRJATIVO" fieldtype="i2"/><FIELD attrname="BDITRFATIVO" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="BDIGRPISMATIVO" fieldtype="i2"/><FIELD
attrname="CONSIDERARQUANTOBRAS" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CONSIDERARCASASDEC" fieldtype="i2"/><FIELD
attrname="CASASDECQUANTIDADES" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CASASDECTAXAS" fieldtype="i2"/><FIELD
attrname="CASASDECMONETARIOS" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CASASDECPERCENTUAIS" fieldtype="i2"/><FIELD
attrname="CASASDECCOEFICIENTES" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CALCULARAOABRIRPRJ" fieldtype="i2"/><FIELD
attrname="EXIBIRVALORTRF" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="EXIBIRVALORCMP" fieldtype="i2"/><FIELD
attrname="ACUMSERVMESMOCODCMP" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="LEISOBRECUSTOUNITISM" fieldtype="i2"/><FIELD
attrname="DATAINICIOPDOS" fieldtype="dateTime"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="TIPOPDO" fieldtype="i2"/><FIELD attrname="NUMDIASPDO" fieldtype="i4"/><FIELD attrname="NUMPDOSCRONOG"
fieldtype="i4"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CAMPOLIVRE1CNT" fieldtype="string" WIDTH="20"/><FIELD attrname="CAMPOLIVRE2CNT" fieldtype="string" WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="MASCARATAREFA" fieldtype="string" WIDTH="60"/><FIELD attrname="MOEDASECUNDARIA" fieldtype="string" WIDTH="4"/><FIELD
attrname="NUCLEUSTIPOMOVREQ" fieldtype="string" WIDTH="10"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="DESCTAREFA" fieldtype="i2"/><FIELD attrname="CLIVRE1OBRA" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVRE2OBRA" fieldtype="string" WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVRE3OBRA" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVRE4OBRA" fieldtype="string" WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR1OBRA" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR2OBRA" fieldtype="string"
WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="BDIPRJ" fieldtype="fixed" DECIMALS="4" WIDTH="32"/><FIELD attrname="FATORLEISOCIAL1" fieldtype="fixed" DECIMALS="4"
WIDTH="32"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="FATORLEISOCIAL2" fieldtype="fixed" DECIMALS="4"
WIDTH="32"/><FIELD attrname="CLIVREVALOR1PAR" fieldtype="fixed" DECIMALS="4" WIDTH="13"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR2PAR" fieldtype="fixed" DECIMALS="4"
WIDTH="13"/><FIELD attrname="CLIVREVALOR3PAR" fieldtype="fixed" DECIMALS="4" WIDTH="13"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR4PAR" fieldtype="fixed" DECIMALS="4"
WIDTH="13"/><FIELD attrname="CLIVREVALOR5PAR" fieldtype="fixed" DECIMALS="4" WIDTH="13"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR6PAR" fieldtype="fixed" DECIMALS="4"
WIDTH="13"/><FIELD attrname="CLIVREVALOR7PAR" fieldtype="fixed" DECIMALS="4" WIDTH="13"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR8PAR" fieldtype="fixed" DECIMALS="4"
WIDTH="13"/><FIELD attrname="CLIVREVALOR9PAR" fieldtype="fixed" DECIMALS="4" WIDTH="13"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR1PARDESC" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR2PARDESC" fieldtype="string"
WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR3PARDESC" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR4PARDESC" fieldtype="string"
WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR5PARDESC" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR6PARDESC" fieldtype="string"
WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR7PARDESC" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR8PARDESC" fieldtype="string"
WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR9PARDESC" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR1ISMDESC" fieldtype="string"
WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR2ISMDESC" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR3ISMDESC" fieldtype="string"
WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR4ISMDESC" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR5ISMDESC" fieldtype="string"
WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR6ISMDESC" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR7ISMDESC" fieldtype="string"
WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR8ISMDESC" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR9ISMDESC" fieldtype="string"
WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CASASDECESPECIAIS" fieldtype="i4"/><FIELD
attrname="MASCARAINSUMO" fieldtype="string" WIDTH="25"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="MASCARACOMPOSICAO" fieldtype="string" WIDTH="20"/><FIELD attrname="USARFILTROINSUMO" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="USARFILTROCOMPOSICAO" fieldtype="i2"/><FIELD
attrname="ATUALIZARVISAOINSUMOS" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="ATUALIZARVISAOCOMPOSICOES" fieldtype="i2"/><FIELD attrname="VTRFCOROBRA" fieldtype="i4"/><FIELD attrname="VTRFCORETAPA" fieldtype="i4"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="VTRFCORSERVICOCOTADO" fieldtype="i4"/><FIELD
attrname="VTRFCORSERVICOCOMCMP" fieldtype="i4"/><FIELD attrname="VTRFCORSERVICOCOMISM" fieldtype="i4"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CMPPRODUCAO" fieldtype="i2"/><FIELD attrname="INTEGRADONUCLEUS" fieldtype="i2"/><FIELD attrname="PERTSABADOS"
fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="PERTFERIADOS" fieldtype="i2"/><FIELD attrname="PERTCALENDARIO" fieldtype="string" WIDTH="16"/><FIELD attrname="DESCINSUMO"
fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="DESCCOMPOSICAO" fieldtype="i2"/><FIELD
attrname="NUCLEUSTIPOCONTROLE" fieldtype="i2"/><FIELD attrname="NUCLEUSTIPOMOVREQ" fieldtype="string" WIDTH="10"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVRE1ISMDESC" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVRE2ISMDESC" fieldtype="string"
WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVRE3ISMDESC" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVRE4ISMDESC" fieldtype="string"
WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVRE5ISMDESC" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR10ISMDESC" fieldtype="string"
WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR11ISMDESC" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR12ISMDESC" fieldtype="string"
WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR13ISMDESC" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR14ISMDESC" fieldtype="string"
WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVRE1CMP" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVRE2CMP" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVRE3CMP"
fieldtype="string" WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVRE4CMP" fieldtype="string" WIDTH="20"/><FIELD
attrname="CLIVRE5CMP" fieldtype="string" WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR1CMP" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR2CMP" fieldtype="string"
WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR3CMP" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR4CMP" fieldtype="string"
WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR5CMP" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVRE1TRF" fieldtype="string"
WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVRE2TRF" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVRE3TRF" fieldtype="string" WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVRE4TRF" fieldtype="string" WIDTH="20"/><FIELD
attrname="CLIVRE5TRF" fieldtype="string" WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR1TRF" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR2TRF" fieldtype="string" WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR3TRF" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR4TRF" fieldtype="string"
WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR5TRF" fieldtype="string" WIDTH="20"/><FIELD attrname="PERTDOMINGOS" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="INTEGRADOFLUXUS" fieldtype="i2"/><FIELD
attrname="FLUXUSTIPODOCLAN" fieldtype="string" WIDTH="10"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="USARFATORK" fieldtype="i2"/><FIELD attrname="REPETIRCODAUXPLAN" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="IGUALARRECURSOTAREFA" fieldtype="i2"/><FIELD
attrname="INTEGRADOOFICINA" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR15ISMDESC" fieldtype="string"
WIDTH="20"/><FIELD attrname="CLIVREVALOR16ISMDESC" fieldtype="string" WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR17ISMDESC" fieldtype="string"
WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR18ISMDESC" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR19ISMDESC" fieldtype="string"
WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR20ISMDESC" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR21ISMDESC" fieldtype="string"
WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR22ISMDESC" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR23ISMDESC" fieldtype="string" WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR24ISMDESC" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR25ISMDESC" fieldtype="string" WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR10PARDESC" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR11PARDESC" fieldtype="string"
WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR12PARDESC" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR13PARDESC" fieldtype="string" WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR14PARDESC" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR15PARDESC" fieldtype="string"
WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR16PARDESC" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR17PARDESC" fieldtype="string" WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR18PARDESC" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR19PARDESC" fieldtype="string" WIDTH="20"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR20PARDESC" fieldtype="string" WIDTH="20"/><FIELD attrname="CLIVREVALOR10PAR" fieldtype="fixed" DECIMALS="4"
WIDTH="15"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR11PAR" fieldtype="fixed" DECIMALS="4"
WIDTH="15"/><FIELD attrname="CLIVREVALOR12PAR" fieldtype="fixed" DECIMALS="4" WIDTH="15"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR13PAR" fieldtype="fixed" DECIMALS="4"
WIDTH="15"/><FIELD attrname="CLIVREVALOR14PAR" fieldtype="fixed" DECIMALS="4" WIDTH="15"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR15PAR" fieldtype="fixed" DECIMALS="4"
WIDTH="15"/><FIELD attrname="CLIVREVALOR16PAR" fieldtype="fixed" DECIMALS="4" WIDTH="15"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR17PAR" fieldtype="fixed" DECIMALS="4"
WIDTH="15"/><FIELD attrname="CLIVREVALOR18PAR" fieldtype="fixed" DECIMALS="4" WIDTH="15"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CLIVREVALOR19PAR" fieldtype="fixed" DECIMALS="4"
WIDTH="15"/><FIELD attrname="CLIVREVALOR20PAR" fieldtype="fixed" DECIMALS="4" WIDTH="15"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="LOGUSRMENU" fieldtype="i2"/><FIELD attrname="LOGUSRISM" fieldtype="i2"/><FIELD attrname="LOGUSRISMPRC" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="LOGUSRISMAPROP" fieldtype="i2"/><FIELD attrname="LOGUSRCMP" fieldtype="i2"/><FIELD attrname="LOGUSRTRF" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="LOGUSRCRON" fieldtype="i2"/><FIELD attrname="ENTERASTAB" fieldtype="i2"/><FIELD attrname="VERPROJECT" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CASASDECCALC" fieldtype="i2"/><FIELD attrname="INTEGRALABORE" fieldtype="i2"/><FIELD attrname="INTEGRAVITAE" fieldtype="i2"/>'); WriteLn(fXmlDataPacket, '<FIELD attrname="CELCALCBDI" fieldtype="string" WIDTH="4"/><FIELD
attrname="CELCALCLEISOCIAL" fieldtype="string" WIDTH="4"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="FLUXUSTIPODOCLANCCRONOG" fieldtype="string" WIDTH="10"/><FIELD attrname="COEFIMPRODZERO" fieldtype="i4"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="IDPLANLEI" fieldtype="i4"/><FIELD
attrname="IDPLANBDI" fieldtype="i4"/><FIELD attrname="IDPLANLEI2" fieldtype="i4"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="UTILIZAFATORKCMP" fieldtype="i4"/><FIELD
attrname="CELCALCLEISOCIAL2" fieldtype="string" WIDTH="4"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CODCPG" fieldtype="string" WIDTH="5"/><FIELD attrname="INTEGRADOBONUM" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="JORNADA" fieldtype="fixed" DECIMALS="2" WIDTH="15"/><FIELD attrname="MOEDASECUNDARIA" fieldtype="string" WIDTH="10"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="VINCPROJECT" fieldtype="i4"/><FIELD attrname="ARQPROJECT" fieldtype="string" WIDTH="250"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="NUCLEUSTIPOMOVAPROP" fieldtype="string" WIDTH="10"/><FIELD attrname="CNTPERMITASSOCSUPCEM" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="ARREDONDAISM" fieldtype="i2"/><FIELD
attrname="ARREDONDAQTDECASASDECNUCLEUS" fieldtype="i2"/><FIELD attrname="AUTODIMISMASSOC" fieldtype="i2"/><FIELD attrname="CORINDIRETA" fieldtype="i4"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="UTILIZARATEIOCC" fieldtype="i2"/><FIELD
attrname="DATABASECONVERSAO" fieldtype="dateTime"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="UTILIZAVIGENCIA" fieldtype="i4"/><FIELD
attrname="TIPOMOVNUCLEUSCOTACAO" fieldtype="string" WIDTH="10"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CNTMEDICAOACIMADECEM" fieldtype="i2"/><FIELD
attrname="PERMITEASSOCTRFCNTSUPVLRORCADO" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="LOGUSRMEDICAO" fieldtype="i2"/><FIELD
attrname="AVISARCRONPREVMENOR100" fieldtype="i4"/><FIELD attrname="DIVIDECOEFPELAPRODUCAO" fieldtype="i4"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="TIPOTRATAMENTOVALOR" fieldtype="i2"/><FIELD
attrname="EDITAPRCUNITARIOLABOREAPROP" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="APLICALEISPRCUNITLABOREAPROP" fieldtype="i2"/><FIELD attrname="INDEXAR" fieldtype="i4"/><FIELD attrname="DATABASEINDEXACAO" fieldtype="dateTime"/><FIELD attrname="UTILIZARATEIODEPTO"
fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CRONOGDESTINOAPROPRIACAO" fieldtype="string" WIDTH="1"/><FIELD attrname="PERMALTERACAOREQMAT" fieldtype="i4"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="LOGUSRREQMAT" fieldtype="i4"/><FIELD
attrname="ORIGEMPRECOMAOOBRAAPROPRIADA" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="CAMPOAPROPRIACAONUCLEUS" fieldtype="string" WIDTH="30"/><FIELD attrname="UTILIZATRAVAMENTOCRONOGPLAN"
fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="PDOINICIALALTERCRONPLAN" fieldtype="i4"/><FIELD attrname="PDOFINALALTERCRONPLAN" fieldtype="i4"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="UTILIZATRAVAMENTOCRONOGREAL" fieldtype="i2"/><FIELD attrname="PDOINICIALALTERCRONREAL" fieldtype="i4"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="PDOFINALALTERCRONREAL" fieldtype="i4"/><FIELD
attrname="UTILIZATRAVAMENTOCRONOGMED" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="PDOINICIALALTERCRONMED" fieldtype="i4"/><FIELD
attrname="PDOFINALALTERCRONMED" fieldtype="i4"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="TIPOMOVESTOQUE" fieldtype="string" WIDTH="10"/><FIELD attrname="HABILITAMOVESTOQUE" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="AUTOINCCOMPOSICAO" fieldtype="i4"/><FIELD
attrname="VALINITAUTOINCCOMPOSICAO" fieldtype="i4"/>');
WriteLn(fXmlDataPacket, '<FIELD attrname="APLICAFATORKINSUMOCURVAABC"
fieldtype="i2"/></FIELDS><PARAMS CHANGE_LOG="1 0 4"/></METADATA>');
WriteLn(fXmlDataPacket, '<ROWDATA><ROW RowState="4" CBDIPRJSOBRETOTAL="1" BDIPRJATIVO="1" BDITRFATIVO="1"');
WriteLn(fXmlDataPacket, 'BDIGRPISMATIVO="1"
CONSIDERARQUANTOBRAS="1" CONSIDERARCASASDEC="1" CASASDECQUANTIDADES="2"
CASASDECTAXAS="4" CASASDECMONETARIOS="4" CASASDECPERCENTUAIS="3"');
WriteLn(fXmlDataPacket, 'CASASDECCOEFICIENTES="2" CALCULARAOABRIRPRJ="0" EXIBIRVALORTRF="1" EXIBIRVALORCMP="1" ACUMSERVMESMOCODCMP="1" LEISOBRECUSTOUNITISM="1" DATAINICIOPDOS ="' + sDataInicio + '" TIPOPDO="30" NUMDIASPDO="30"');
WriteLn(fXmlDataPacket, 'NUMPDOSCRONOG="' + IntToStr(iNumPeriodos)+ '" ASCARATAREFA="###.####" MOEDASECUNDARIA="'+ sMoedaCotada + '" NUCLEUSTIPOMOVREQ="2.1.08" DESCTAREFA="1"
BDIPRJ="1.0000" FATORLEISOCIAL1="1.0000" FATORLEISOCIAL2="1.0000" CASASDECESPECIAIS="2"');
WriteLn(fXmlDataPacket, 'MASCARACOMPOSICAO="##.####" USARFILTROINSUMO="0" USARFILTROCOMPOSICAO="0" ATUALIZARVISAOINSUMOS="1" ATUALIZARVISAOCOMPOSICOES="1" VTRFCOROBRA="0" VTRFCORETAPA="0" VTRFCORSERVICOCOTADO=""');
WriteLn(fXmlDataPacket, 'VTRFCORSERVICOCOMCMP="0" VTRFCORSERVICOCOMISM="0" CMPPRODUCAO="1" INTEGRADONUCLEUS="1" PERTSABADOS="0" PERTFERIADOS="1" DESCINSUMO="1" DESCCOMPOSICAO="1" NUCLEUSTIPOMOVREC="2.1.08"');
WriteLn(fXmlDataPacket, 'NUCLEUSTIPOCONTROLE="0" PERTDOMINGOS="0" INTEGRADOFLUXUS="0" USARFATORK="0" REPETIRCODAUXPLAN="0" IGUALARRECURSOTAREFA="1" INTEGRADOOFICINA="0"
LOGUSRMENU="0" LOGUSRISM="0"');
WriteLn(fXmlDataPacket, 'LOGUSRISMPRC="0" LOGUSRISMAPROP="0" LOGUSRCMP="0" LOGUSRTRF="0" LOGUSRCRON="0" ENTERASTAB="0" VERPROJECT="0" CASASDECCALC="0" INTEGRALABORE="0"
INTEGRAVITAE="0"');
WriteLn(fXmlDataPacket, 'CELCALCBDI="0" CELCALCLEISOCIAL="0" COEFIMPRODZERO="0" UTILIZAFATORKCMP="0" INTEGRADOBONUM="0" CNTPERMITASSOCSUPCEM="0" ARREDONDAISM="0" AUTODIMISMASSOC="0" UTILIZARATEIOCC="0"');
WriteLn(fXmlDataPacket, 'UTILIZAVIGENCIA="0" CNTMEDICAOACIMADECEM="0" PERMITEASSOCTRFCNTSUPVLRORCADO="0" LOGUSRMEDICAO="0" AVISARCRONPREVMENOR100="1" DIVIDECOEFPELAPRODUCAO="0" TIPOTRATAMENTOVALOR="1"');
WriteLn(fXmlDataPacket, 'EDITAPRCUNITARIOLABOREAPROP="0" PLICALEISPRCUNITLABOREAPROP="0" INDEXAR="1" UTILIZARATEIODEPTO="0" ARREDONDAQTDECASASDECNUCLEUS="4"
CRONOGDESTINOAPROPRIACAO="R"');
WriteLn(fXmlDataPacket, 'PERMALTERACAOREQMAT="2" LOGUSRREQMAT="0" ORIGEMPRECOMAOOBRAAPROPRIADA="0" CAMPOAPROPRIACAONUCLEUS="DATAEMISSAO" UTILIZATRAVAMENTOCRONOGPLAN="0" UTILIZATRAVAMENTOCRONOGREAL="0"');
WriteLn(fXmlDataPacket, 'UTILIZATRAVAMENTOCRONOGMED="0" TIPOMOVESTOQUE="2.1.08" HABILITAMOVESTOQUE="1" AUTOINCCOMPOSICAO="0" VALINITAUTOINCCOMPOSICAO="1"
APLICAFATORKINSUMOCURVAABC="0"/></ROWDATA></DATAPACKET>');
CloseFile(fXmlDataPacket);
Passo 2) Em seguida, vamos abrir e atribuir este XML a um ClientDataset:
cdsParamProjeto.FileName := sXMLHead;
cdsParamProjeto.Open;
Caso tudo dê certo, o CDS será aberto. Caso ele não consiga ser aberto e gere uma exception, verifique qual a rezão do erro ocorrido. Muito provavelmente há um erro no .xml
Passo 3) Bom, com o CDS aberto, bastará então criarmos uma rotina de loop que irá ler cada coluna do CDS e dar um insert na tabela MPARAMETRO:
for i := 0 to DMProj.cdsParamProjeto.fields.Count-1 do begin
qParamsProjeto.Close;
qParamsProjeto.ParamByName('CODCOLIGADA').AsInteger := CorporeRM.Coligada;
qParamsProjeto.ParamByName('IDPRJ').AsInteger := iIDPrj;
qParamsProjeto.ParamByname('PARAMETRO').AsString := DMProj.cdsParamProjeto.Fields[i].FieldName;
qParamsProjeto.Open;
if qParamsProjeto.Eof then
begin
qParamsProjeto.Insert;
qParamsProjeto.FieldByName('CODCOLIGADA').AsInteger := CorporeRM.Coligada;
qParamsProjeto.FieldByName('IDPRJ').AsInteger := iIDPrj;
qParamsProjeto.FieldByname('PARAMETRO').AsString := DMProj.cdsParamProjeto.Fields[i].FieldName;
case DMProj.cdsParamProjeto.Fields[i].DataType of
ftInteger: qParamsProjeto.FieldByname('VALORINT').AsInteger := cdsParamProjeto.FieldByName(DMProj.cdsParamProjeto.Fields[i].FieldName).AsInteger;
ftSmallint: qParamsProjeto.FieldByname('VALORINT').AsInteger := cdsParamProjeto.FieldByName(DMProj.cdsParamProjeto.Fields[i].FieldName).AsInteger;
ftFloat: qParamsProjeto.FieldByname('VALORFLOAT').AsFloat := cdsParamProjeto.FieldByName(DMProj.cdsParamProjeto.Fields[i].FieldName).AsFloat;
ftDateTime: qParamsProjeto.FieldByname('VALORDATA').AsDateTime := cdsParamProjeto.FieldByName(DMProj.cdsParamProjeto.Fields[i].FieldName).AsDateTime;
ftString: qParamsProjeto.FieldByname('VALORSTR').AsString := cdsParamProjeto.FieldByName(DMProj.cdsParamProjeto.Fields[i].FieldName).AsString;
end;
//
qParamsProjeto.Post;
end;
end;
DMProj.cdsParamProjeto.Close;
DeleteFile(sXMLHead);
//
A sentença que irá alimentar a query qParamsProjeto deverá ser:
select CODCOLIGADA, IDPRJ, PARAMETRO, VALORINT, VALORFLOAT, VALORDATA, VALORSTR from MPARAMETRO where CODCOLIGADA = :CODCOLIGADA and IDPRJ = :IDPRJ AND PARAMETRO = :PARAMETRO
Dar um insert diretamente, irá acarretar erros ao você tentar passar um valor NULL para os valores de parametros que não serão preenchidos. Melhor deixar isto por conta do BDE.
Você pode criar a query em Run-Time mesmo. Depois de gravados os dados na tabela MPARAMETRO, ela não será mais necesária.]
qParamsProjeto := TQuery.Create(nil);
qParamsProjeto.DatabaseName := CorporeRM.DatabaseName;
qParamsProjeto.RequestLive := True;
qParamsProjeto.SQL.Add('select CODCOLIGADA, IDPRJ, PARAMETRO, VALORINT, VALORFLOAT, VALORDATA, VALORSTR from MPARAMETRO');
qParamsProjeto.SQL.Add('where CODCOLIGADA = :CODCOLIGADA and IDPRJ = :IDPRJ AND PARAMETRO = :PARAMETRO');
qParamsProjeto.Prepare;
//
Nenhum comentário:
Postar um comentário