Buscar
Tópicos similares
Últimos assuntos
Parametrizando um projeto no RM Solum
Página 1 de 1 • Compartilhe •
Parametrizando um projeto no RM Solum
O RM Solum cria os parametros do projeto na tabela MPARAMETRO. Caso você queira fazer uma importação de um projeto pra dentro dele, não dá pra você montar uma rotina que dê cerca de 200 inserts sequenciados mudando apenas o nome do parametro e ainda por cima testando valor por valor.
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, '');
WriteLn(fXmlDataPacket, '');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' attrname="CONSIDERARQUANTOBRAS" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, ' attrname="CASASDECQUANTIDADES" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, ' attrname="CASASDECMONETARIOS" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, ' attrname="CASASDECCOEFICIENTES" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, ' attrname="EXIBIRVALORTRF" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, ' attrname="ACUMSERVMESMOCODCMP" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, ' attrname="DATAINICIOPDOS" fieldtype="dateTime"/>');
WriteLn(fXmlDataPacket, ' fieldtype="i4"/>');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' attrname="NUCLEUSTIPOMOVREQ" fieldtype="string" WIDTH="10"/>');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' WIDTH="32"/>');
WriteLn(fXmlDataPacket, ' WIDTH="32"/> ');
WriteLn(fXmlDataPacket, ' WIDTH="13"/> ');
WriteLn(fXmlDataPacket, ' WIDTH="13"/> ');
WriteLn(fXmlDataPacket, ' WIDTH="13"/> ');
WriteLn(fXmlDataPacket, ' WIDTH="13"/> ');
WriteLn(fXmlDataPacket, ' WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' attrname="MASCARAINSUMO" fieldtype="string" WIDTH="25"/>');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' attrname="ATUALIZARVISAOINSUMOS" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' attrname="VTRFCORSERVICOCOMCMP" fieldtype="i4"/> ');
WriteLn(fXmlDataPacket, ' fieldtype="i2"/>');
WriteLn(fXmlDataPacket, ' fieldtype="i2"/>');
WriteLn(fXmlDataPacket, ' attrname="NUCLEUSTIPOCONTROLE" fieldtype="i2"/> ');
WriteLn(fXmlDataPacket, ' WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' fieldtype="string" WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' attrname="CLIVRE5CMP" fieldtype="string" WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' attrname="CLIVRE5TRF" fieldtype="string" WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' attrname="FLUXUSTIPODOCLAN" fieldtype="string" WIDTH="10"/>');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' attrname="INTEGRADOOFICINA" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, ' WIDTH="20"/> ');
WriteLn(fXmlDataPacket, ' WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' WIDTH="20"/>');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' WIDTH="15"/>');
WriteLn(fXmlDataPacket, ' WIDTH="15"/> ');
WriteLn(fXmlDataPacket, ' WIDTH="15"/> ');
WriteLn(fXmlDataPacket, ' WIDTH="15"/> ');
WriteLn(fXmlDataPacket, ' WIDTH="15"/> ');
WriteLn(fXmlDataPacket, ' WIDTH="15"/> ');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' '); WriteLn(fXmlDataPacket, ' attrname="CELCALCLEISOCIAL" fieldtype="string" WIDTH="4"/>');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' attrname="IDPLANBDI" fieldtype="i4"/> ');
WriteLn(fXmlDataPacket, ' attrname="CELCALCLEISOCIAL2" fieldtype="string" WIDTH="4"/>');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' attrname="ARREDONDAQTDECASASDECNUCLEUS" fieldtype="i2"/> ');
WriteLn(fXmlDataPacket, ' attrname="DATABASECONVERSAO" fieldtype="dateTime"/>');
WriteLn(fXmlDataPacket, ' attrname="TIPOMOVNUCLEUSCOTACAO" fieldtype="string" WIDTH="10"/>');
WriteLn(fXmlDataPacket, ' attrname="PERMITEASSOCTRFCNTSUPVLRORCADO" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, ' attrname="AVISARCRONPREVMENOR100" fieldtype="i4"/> ');
WriteLn(fXmlDataPacket, ' attrname="EDITAPRCUNITARIOLABOREAPROP" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, ' fieldtype="i2"/>');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' attrname="ORIGEMPRECOMAOOBRAAPROPRIADA" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, ' fieldtype="i2"/>');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' attrname="UTILIZATRAVAMENTOCRONOGMED" fieldtype="i2"/>');
WriteLn(fXmlDataPacket, ' attrname="PDOFINALALTERCRONMED" fieldtype="i4"/>');
WriteLn(fXmlDataPacket, ' ');
WriteLn(fXmlDataPacket, ' attrname="VALINITAUTOINCCOMPOSICAO" fieldtype="i4"/>');
WriteLn(fXmlDataPacket, ' fieldtype="i2"/> ');
WriteLn(fXmlDataPacket, '
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"/> ');
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;
//
Postado por Walter Chagas Jr. às 12/19/2007 09:15:00 AM 0 comentários
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, '');
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
WriteLn(fXmlDataPacket, '
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"/>
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;
//
Postado por Walter Chagas Jr. às 12/19/2007 09:15:00 AM 0 comentários
fmsolucoes- Admin
- Mensagens : 292
Pontos : 612
Data de inscrição : 17/07/2009
Idade : 40
Localização : Conselheiro Lafaiete

» Idéia de Camisa do Time para Projeto Vida Do futebol
» [Projeto] Helper GML
» [Resolvido]5.8Ghz Novo Projeto....
» PROVA Engenharia e Projeto de Software
» AJUDA EM MONTAR PROJETO PARA PROVEDOR
» [Projeto] Helper GML
» [Resolvido]5.8Ghz Novo Projeto....
» PROVA Engenharia e Projeto de Software
» AJUDA EM MONTAR PROJETO PARA PROVEDOR
Página 1 de 1
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum
» Instalar base DEMO
» Relatorio Rm reports / Holerite salario
» DEFAULT NO CADASTRO DE FUNCIONARIOS RM LABORE
» Duvida RM Labore - Calculo Folha de Pagamento
» Exportar Imagem do banco de dados SQL SERVER
» Consulta SQL
» Existe Algum Demo do RM Labore???
» RM BIBLIOS