| ♥ 0 | Estamos a migrar um projeto de VBA para a v10/VB.Net
Neste caso em concreto pretende-se associar a descrição de um artigo em inglês à descrição em português.
No evento “ArtigoIdentificado” do “Editor de Vendas” ao executar métodos relacionadas com as linhas dos documentos ocorre o erro “A referência de objecto não foi definida como uma instância de um objecto“.
Nos testes que fiz verifiquei que o mesmo erro ocorre com vários métodos relacionados com as linhas do documento.
O código que estou a tentar executar é o seguinte:
Public Overrides Sub ArtigoIdentificado(Artigo As String, NumLinha As Integer, ByRef Cancel As Boolean, e As ExtensibilityEventArgs)
MyBase.ArtigoIdentificado(Artigo, NumLinha, Cancel, e)
Dim strDescrEN As String
'Adiciona a descrição em ingles à descrição standard em PT.
'Só executa de o Cancel for false e se a descrição em EN existir
If Cancel = False Then
strDescrEN = BSO.Base.ArtigosIdiomas.DaValorAtributo(Artigo, "EN", "Descricao")
If Len(strDescrEN) > 0 Then
Me.DocumentoVenda.Linhas(NumLinha).Descricao = Me.DocumentoVenda.Linhas(NumLinha).Descricao & " | " & strDescrEN
End If
End If
End Sub
Obrigado!
EDIT: Entretanto apercebi-me do método “GetEdita” alterei o código para: Me.DocumentoVenda.Linhas.GetEdita(NumLinha).Descricao = Me.DocumentoVenda.Linhas.GetEdita(NumLinha).Descricao & ” | ” & strDescrEN Assim não dá erro e obtenho a funcionalidade que preciso. É este o caminho correto? TIA Marcado como spam |
| Resposta privada Sim está correcta a forma de aceder às linhas. No caso do editor e nesse evento em concreto podes usar uma das seguintes formas de aceder as linhas. public class UiEditorVendas : EditorVendas
{
public override void ArtigoIdentificado(string Artigo, int NumLinha, ref bool Cancel, ExtensibilityEventArgs e)
{
// Iterar por todas as linhas
foreach(VndBE100.VndBELinhaDocumentoVenda l in this.DocumentoVenda.Linhas)
{
}
// Aceder apenas a uma linha
var linha = this.DocumentoVenda.Linhas.GetEdita(NumLinha);
}
}
Marcado como spam |