Trabalhando com Tabela de Parâmetros – SX6


Visualizando o conteúdo do parâmetro registrado na tabela SX6 tabelaparametrossx6 Temos funções prontas que permitem pegar o valor de um parâmetros. Podendo ser as funções: GETMV() Retorna o conteúdo do parâmetro especificado no Arquivo SX6. Sintaxe: GETMV(parametro) Exemplo: Com base na imagem acima, pegar o valor do parâmetro MV_ZTPDB, do tipo caracter

Local cTipoDB := GETMV("MV_ZTPDB")
Retorno: MSSQL SUPERGETMV() Retorna o conteúdo do parâmetro especificado no Arquivo SX6. Porém, caso o parâmetro não exista, podemos pré-definir um conteúdo padrão, desta forma a rotina não dará erros, apenas um alerta (caso esteja parametrizado), mas irá trazer o valor definido. Caso contrário, trará a informação do conteúdo definido na tabela SX6. Sintaxe: SUPERGETMV( <nome do parâmetro>, <lHelp>, <cPadrão>, <Filial do sistema> ) Exemplo: Baseando-se na imagem acima, irei buscar o conteúdo do parâmetro MV_ZTPDB
Local cTipoDB := SUPERGETMV ("MV_ZTPDB",.T.,"")
Retorno: MSSQL Caso o parâmetro não exista:
Local cTipoDB := SUPERGETMV ("MV_ZTPDB",.T.,"ORACLE")
Retorno: ORACLE   Salvando conteúdo em parâmetros Para salvar um determinado conteúdo no seu parâmetro, utilize a função PUTMV() Sintaxe: PUTMV( <nome do parâmetro>, <conteúdo> ) Exemplo:
PUTMV("MV_ZTPDB","ORACLE")
Retorno: Irei graver o conteúdo “ORACLE” no meu parâmetro MV_ZTPDB existente na minha tabela SX6.   Criando um parâmetro via código A criação de parâmetros para suas rotinas é um processo bem simples, você fazê-lo diretamente dentro de seu fonte caso não queira abrir o “Configurador”, para isso usa o código:
DbSelectArea("SX6") //Abre a tabela SX6
DbSetOrder(1) //Se posiciona no primeiro indice
If !DbSeek(xFilial("SX6")+"MV_ZTPDB") //Verifique se o parametro existe
      RecLock("SX6",.T.) //Se nao existe, criar o registro
      SX6->X6_FIL     := xFilial( "SX6" )
      SX6->X6_VAR     := "MV_ZTPDB"
      SX6->X6_TIPO    := "C"
      SX6->X6_DESCRIC := "Tipo de Banco de Dados utilizado para..."
      SX6->X6_CONTEUD := "ORACLE"
      MsUnLock() //salva o registro com as informações passada
Else
      RecLock("SX6",.F.) //Abre o registro para edição
      SX6->X6_CONTEUD := "ORACLE"  //atualiza apenas o campo desejado
      MsUnLock() //salva o registro
EndIf
Como vê, tem várias formas de se trabalhar com leitura e gravação da tabela SX6, se souber de mais alguma, compartilhe conosco!