|
Postada em 09/01/2005 01:06 hs
Tenho uma tabela com 8.450 clientes e estou tentando preencher um MSHFlexGrid com todos os clientes, escrevendo pouco código, só que o MSHFlexGrid só é preenchido com os primeiros 2.048 clientes, os demais registros não são inseridos no grid, quando testo o preenchimento utilizando do while...loop ele preenche o grid normamente, só que fica lento. Utilizo: Banco de dados Access 2000: db.mdb Tabela: tabClientes Referência VB: Microsoft ActiveX Data Objects 2.1 library Componente: Microsoft Hierarchical FlexGrid 6.0 Control (OLE DB). Código: Private Sub Form_Load() Dim cnn As New ADODB.Connection Dim rst As New ADODB.Recordset cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:estoquedb.mdb" rst.Open "Select * From tabClientes", cnn, adOpenKeyset, adLockPessimistic Set gridClientes.DataSource = rst rst.Close End Sub Alguém pode me ajudar? Uma braço. Fábio.
|
|
|
|
|
Postada em 09/01/2005 17:14 hs
Eu recomendo vc usar o "Microsof DataGrid Control 6.0 (OLEDB)", neste caso vc não teria problemas era só acrescentar uma linha e tirar outra... 'Sendo gridClientes = DataGrid Private Sub Form_Load() Dim cnn As New ADODB.Connection Dim rst As New ADODB.Recordset cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:estoquedb.mdb" rst.CursorLocation = adUseClient rst.Open "Select * From tabClientes", cnn, adOpenKeyset, adLockPessimistic Set gridClientes.DataSource = rst End Sub Usando o Datagrid vem os 8.450 registros normalmente... mas se vc tiver q usar o MSHFlex não sei... como vc está fazendo o preenchimento?
|
|
|
|
|
|
Postada em 09/01/2005 17:46 hs
É, com o DataGrid dá certo. Eu já havia tentado. No entanto, acho o DataGrid pouco flexível. Gostaria de tentar resolver com MSHFlexGrid. Se alguém poder ajudar, eu fico agradecido. Faço o preenchimento usando comandos SQL... da seguinte forma: String de conexão que utilizo: "Provider=MSDASQL.1;Persist Security Info=False;Data Source=DB_ESTOQUE" Obs.: Já tentei outros tipos de string de conexão, acho que é alguma configuração com MSHFlexGrid. cnn.execute "INSERT INTO tabClientes (<campos>) VALUES (<valores>)" cnn é o objeto de conexão com a base de dados.
|
|
|
|
Postada em 09/01/2005 18:30 hs
Bom, eu falava do preenchimento do MSHFlexgrid... vc faz por looping certo?? Já q vc fecha a conexão depois de "setar" o Grid então pq vc não abre a tabela com o tipo de cursor adOpenForwardOnly ?? talvez vá mais rápido...
|
|
|
|
Postada em 09/01/2005 19:07 hs
Obrigado pela ajuda ghost_jlp. Encontrei o problema. Trata-se de um bug no MSHFlexGrid. Para conhecer melhor o problema e como resolve-lo segue abaixo o link da página suporte da MicroSoft onde o problema é relatado.
|
|
|