♥ 0 | Bom dia a todos,
Estou a fazer para um cliente uma aplicação onde apenas parece uma DataGrid com a informação de Artigos (Codigo, Descrição, PVP1 e Stock). A questão que coloco é que o cliente tem mais de 12.000 artigos e com o codigo que tenho demora imenso a ler toda a tabela. Será que há alguma forma de o fazer de forma mais rapida atravez das APIs?
O Codigo que uso é este: Dim lstArt As StdBELista = motor.Comercial.Artigos.LstArtigos While lstArt.NoFim <> True Marcado como spam |
Resposta privada Se a “DataGrid” a que se refere é do tipo “DataGridView” (controlo nativo do .NET), então poderá fazer da seguinte forma (bind direto a um “DataTable”): Private Sub CarregaDataGridView() Try Dim motor As New ErpBS Dim lista As StdBELista Dim dataTable As New DataTable Dim sql As New StringBuilder With dataTable .Columns.Add("Artigo") .Columns.Add("Descricao") .Columns.Add("UnidadeBase") .Columns.Add("PVP1") .Columns.Add("StkActual") End With motor.AbreEmpresaTrabalho(StdBETipos.EnumTipoPlataforma.tpEmpresarial, "DEMO", "primavera", String.Empty) sql.AppendLine("SELECT A.Artigo, A.Descricao, A.UnidadeBase, AM.PVP1, A.StkActual") sql.AppendLine("FROM Artigo A") sql.AppendLine("INNER JOIN ArtigoMoeda AM ON AM.Artigo = A.Artigo AND AM.Moeda = 'EUR'") lista = motor.Consulta(sql.ToString()) While Not lista.NoFim Dim row As DataRow = dataTable.NewRow row("Artigo") = Convert.ToString(lista.Valor("Artigo")) row("Descricao") = Convert.ToString(lista.Valor("Descricao")) row("UnidadeBase") = Convert.ToString(lista.Valor("UnidadeBase")) row("PVP1") = String.Format("{0:#,##0.00}", lista.Valor("PVP1")) row("StkActual") = String.Format("{0:#,##0.00}", lista.Valor("StkActual")) dataTable.Rows.Add(row) lista.Seguinte() End While myDataGridView.DataSource = dataTable Catch ex As Exception MsgBox(ex.Message) End Try End Sub
Marcado como spam Comentários Obrigado, funciona perfeitamente mesmo a listagem sendo acima dos 12.000 Artigos | |
Resposta privada Olá @jcdiniz Esta questão está fora do ambito deste forun, e como disse o João Martins aconcelhamos que questões deste tipo sejam colocada no stackoverflow. Recomendamos a leitura da secção de FAQ’s https://developers.ila.cegid.com/faqs/ para saber como utilizar correctamente as duas plataformas. PRIMAVERABSS Marcado como spam |
Olá @João. Recomendamos que coloque a sua questão no StackOverflow. Está bem estruturada e tem código associado. É importante que este tipo de questões sejam abordadas naquela plataforma.