Jump to content

PHC - Valor por defeito de campo usr5 na tabela bi


Recommended Posts

tertuliano

Bom dia,

Pretendia que nas linhas de um dossier interno, no campo lobs3 fosse devolvido o valor st.usr5 respeitante à referência da linha.

Já criei o campo bi.lobs3 e construí esta expressão em XBASE:

if nmdos ='13' 
replace bi.lobs3 with bi.usr5 where and bi.ref = st.ref
endif
return bi.lobs3

Mas o campo continua em branco, apesar de na referência que estou a testar, estar escrito na sua ficha técnico de artigo o valor que pretendo. Em suma, pretendo o mesmo com a opção de configuração do dossier "Mostra o campo do utilizador 6 da ficha do artigo", mas com o campo 5 :)

Obrigado!

Romeu Costa

Link to post
Share on other sites
pc.cesar

o campo bi.lobs3 não existe deverá ser bi.u_lobs3,  o campo nao pode ser criado pelo management-Studio tem de ser criado pelo PHC

 

valor por defeito ao gravar:

if bo.ndos#13
return bi.u_lobs3
else
     if get_stref(bi.ref,"ref,design,usr5")
         replace bi.u_lobs3 with tempst.usr5
     endif
endif
return bi.u_lobs3

 

 

 

 

César Faria

Link to post
Share on other sites
tertuliano

Obrigado pela pontualidade da resposta.

O campo bi.lobs3 efetivamente existe, assim como bi.lobs2 e bi.lobs. Eles são ativos nas opções de configuração dos dossiers onde diz "Campo de Observações...".

Basta fazer uma query SELECT bi.lobs, bi.lobs2, bi.lobs3 from bi que eles aparecem :)

Em relação ao código, infelizmente não funcionou :(

Não apresentou qualquer erro, mas o campo continua a não ser preenchido automaticamente. Testei ao introduzir na base de dados principal, e testei ao gravar na base de dados teste, uma vez que se trata de um dossier certificado.

Tem mais alguma ideia ? :) 

Romeu Costa

Link to post
Share on other sites
pc.cesar

coloca uma mensagem para verificar se devolve a mensagem.. se devolver verifica se o campo é alfanumerico

 

replace bi.u_lobs3 with alltrim(astr(tempst.usr5))

 

 

 

César Faria

Link to post
Share on other sites
tertuliano

Sim, ele devolve a mensagem. Se no Valor por Defeito, eu seleciono a opção "determinado valor" e escrever teste2, irá aparecer teste2 no campo lobs3. Relembro que não há necessidade de criar campo, já existe o bi.lobs3, logo não será bi.u_lobs3.

A grande dificuldade está em criar um código na opção "comando xbase" que me devolva um valor dinâmico. Vou tentar ilustrar em pseudo-código:

Na tabela ST existe um artigo com a referência "A1", e cujo campo usr5 está preenchido com o valor "verde".

No dossier interno com o número interno 13, quando adiciono uma linha e escrevo a referência A1, na coluna Acabamento (bi.lobs3) deverá aparecer automaticamente verde.

Ou seja, tinha de ser algo do género:

if nmdos ='13' 
replace bi.lobs3 with (select usr5 from st where st.ref = bi.ref)
endif
return bi.lobs3

Mas parece-me uma missão impossível, porque desconfio que poderá ser necessário um evento dinâmico a nível das linhas, e como tal provavelmente não funcionará na versão Advanced.

Inicialmente quando criei o tópico parecia-me simples, porque apenas queria a mesma coisa que já existe com o usr6 nativamente, mas desta feita queria também acrescentar o usr5.

Agradeço na mesma toda a ajuda e atenção dispensada.

Romeu Costa

Link to post
Share on other sites
pc.cesar

nao é nmdos mas sim Ndos

valor por defeito no campo bi.lobs3

select bo
if bo.ndos#13
     return bi.lobs3
else    
     if get_stref(bi.ref,"ref,design,usr5")
          replace bi.lobs3 with alltrim(tempst.usr5)
     endif
endif
return bi.lobs3

 

 

 

 

César Faria

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.