Procurar
Tópicos semelhantes
Últimos assuntos
Parametrizando um projeto no RM Solum
Página 1 de 1
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
Tópicos semelhantes
» Parametrizando um projeto no RM Solum
» Integração RM SOLUM X NUCLEUS
» Passo-a-passo de um projeto ERP
» Integração RM SOLUM X NUCLEUS
» Passo-a-passo de um projeto ERP
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
Ter 20 Jun 2017 - 12:48 por paulo.ferreira_rj
» Instalar base DEMO
Sex 2 Jun 2017 - 6:29 por akaytatsu
» Relatorio Rm reports / Holerite salario
Ter 18 Out 2016 - 8:09 por Gárgio
» DEFAULT NO CADASTRO DE FUNCIONARIOS RM LABORE
Sex 7 Out 2016 - 21:51 por mpsbrasilia
» Duvida RM Labore - Calculo Folha de Pagamento
Seg 12 Set 2016 - 15:51 por RIVALDO PAES
» Exportar Imagem do banco de dados SQL SERVER
Qui 28 Jul 2016 - 11:42 por edivan
» Consulta SQL
Qui 10 Set 2015 - 11:32 por evertonerp
» Existe Algum Demo do RM Labore???
Sex 17 Abr 2015 - 11:53 por fmsolucoes
» RM BIBLIOS
Seg 16 Fev 2015 - 7:50 por fmsolucoes