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