♥ 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 |