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
» Consulta SQL Banco RM
Parametrizando um projeto no RM Solum EmptyTer 20 Jun 2017 - 12:48 por paulo.ferreira_rj

» Instalar base DEMO
Parametrizando um projeto no RM Solum EmptySex 2 Jun 2017 - 6:29 por akaytatsu

» Relatorio Rm reports / Holerite salario
Parametrizando um projeto no RM Solum EmptyTer 18 Out 2016 - 8:09 por Gárgio

» DEFAULT NO CADASTRO DE FUNCIONARIOS RM LABORE
Parametrizando um projeto no RM Solum EmptySex 7 Out 2016 - 21:51 por mpsbrasilia

» Duvida RM Labore - Calculo Folha de Pagamento
Parametrizando um projeto no RM Solum EmptySeg 12 Set 2016 - 15:51 por RIVALDO PAES

» Exportar Imagem do banco de dados SQL SERVER
Parametrizando um projeto no RM Solum EmptyQui 28 Jul 2016 - 11:42 por edivan

» Consulta SQL
Parametrizando um projeto no RM Solum EmptyQui 10 Set 2015 - 11:32 por evertonerp

» Existe Algum Demo do RM Labore???
Parametrizando um projeto no RM Solum EmptySex 17 Abr 2015 - 11:53 por fmsolucoes

» RM BIBLIOS
Parametrizando um projeto no RM Solum EmptySeg 16 Fev 2015 - 7:50 por fmsolucoes

Galeria


Parametrizando um projeto no RM Solum Empty
Navegação
 Portal
 Índice
 Membros
 Perfil
 FAQ
 Buscar
Parceiros & Clientes FM Soluções

Parametrizando um projeto no RM Solum

Ir em baixo

Parametrizando um projeto no RM Solum Empty 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
fmsolucoes
Admin

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

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

Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

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