+9 votos
57 visitas
Não estou conseguindo identificar se um campo do tipo Tabela está nulo no Python, alguem poderia me ajudar?

Os campos do tipo tabela no IronPython utilizado no WES são reconhecidos pelo tipo EntityAssociation, já tentei utilizar as seguintes formas, mas nenhuma identificou que o campo está vazio (quando ele realmente está vazaio):

- entity.Fields["SOLICITANTE"] == None

- entity.Fields["SOLICITANTE"] == NULL

- entity.Fields["SOLICITANTE"] is None

- not entity.Fields["SOLICITANTE"].Handle.Value.NullableValue.HasValue

- entity.Fields["SOLICITANTE"].Handle == None

- entity.Fields["SOLICITANTE"].Handle.Value == None

- entity.Fields["SOLICITANTE"].Handle.Value <= 0

- not entity.Fields["SOLICITANTE"].Handle.Value > 0

 

Segue um exemplo do código:

def OnSOLICITANTEValueChanged(view, entity):

      if entity.Fields["SOLICITANTE"] == None:

             ....
por (272 pontos) | 57 visitas

2 Respostas

+5 votos
Melhor resposta

Quando acessado a propriedade Entity e recuperar um campo do Tabela, o mesmo é do tipo EntityAssociation.

O EntityAssociation possui uma propriedade Handle que nunca será nula, mas mesmo não sendo nula não quer dizer que o Handle é válido. Assim para identificar se o campo tabela está nulo basta verificar se o Handle é válido.

Segue abaixo cógido de exemplo:

def Load(widget):
    #Para acessar a propriedade Handle é preciso realizar os seguintes imports
	from Benner.Tecnologia.Common import EntityAssociation
	from Benner.Tecnologia.Common import Handle
       
    #Busca o handle do campo
	entity = widget.Entity
	handle = entity.Fields["CAMPOTABELA"].Handle
    #Verifica se o handle é inválido
	if handle.IsInvalid() == True:
        #Sendo inválido entrara no if  
		

 

por (231 pontos)
editado por
0 votos
Como o campo é um Entity, se ela possuir valor vai exister a propriedade Handle, então, se  entity.Fields["SOLICITANTE"] for vazio, o Handle não existe. Isso vai gerar ao erro tentar resgatar o valor de handle, assim é possível utilizar um Try [...] Catch, se cair na exceção é porque o campo é vazio.
por (148 pontos)
Janaína, esta solução me ajudou e funcionou, com ela consegui prosseguir com o meu desenvolvimento temporariamente.

Mas ainda gostaria de saber se há alguma outra solução para realmente identificar se o campo está nulo.
Também estou nessa situação. Mas fazendo desse jeito não parece ser muito correto.
Existiria uma outra forma de ser realizada essa verificação?
Foi adicionado outra resposta que apresenta uma solução melhor para verificar se o campo tabela está nulo.

Perguntas relacionadas

+2 votos
2 respostas
perguntado 26 Jun, 2015 por ricardo.caresia (23 pontos) | 71 visitas
0 votos
1 resposta
+1 voto
1 resposta
+5 votos
1 resposta
perguntado 9 Mai, 2014 por Camila (288 pontos) | 79 visitas
+10 votos
1 resposta
Melhores May 2020
  1. henrique.muller

    18 Pontos

  2. joao.melo

    14 Pontos

  3. joseglauber

    11 Pontos

  4. SlimShady

    7 Pontos

  5. willian.metalsystem

    6 Pontos

  6. lucas.melo

    3 Pontos

  7. fluipress.luciano

    2 Pontos

  8. pajucara.wallacef

    2 Pontos

  9. jean.filho

    2 Pontos

  10. maicon.pereira

    2 Pontos

200 pontos
Melhores 2020 May 25 - 31
    433 perguntas
    476 respostas
    346 comentários
    466 usuários