FM SOLUÇÕES - (31) 3761-3490
Seja bem vindo ao Fórum FM Soluções!!

Aqui você poderá postar suas dúvidas, experiências e ainda baixar e postar roteiros e tutoriais não oficiais sobre os módulos da RM Sistemas.

E ainda, conhecer um pouco sobre os nossos produtos e serviços!!!
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Últimos assuntos
» 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

» Identificação do Tipo de Renegociação de Aditivo (SGI)
Ter 26 Ago 2014 - 9:13 por VM Simoes

» Conexão com o banco de dados.
Seg 4 Ago 2014 - 20:44 por Juscelio

Galeria


Navegação
 Portal
 Índice
 Membros
 Perfil
 FAQ
 Buscar
Parceiros & Clientes FM Soluções

Parametrizando um projeto no RM Solum

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Parametrizando um projeto no RM Solum

Mensagem por fmsolucoes em Qua 6 Jan 2010 - 14:13

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

fmsolucoes
Admin

Mensagens : 292
Pontos : 612
Data de inscrição : 17/07/2009
Idade : 38
Localização : Conselheiro Lafaiete

Ver perfil do usuário http://www.fmsolucoeserp.com.br

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum