Erro Microsoft Form...
 
Notifications
Clear all

Erro Microsoft Forms: "Espaço insuficiente de armazenamento"

11 Posts
2 Usuários
0 Reactions
2,950 Visualizações
(@gamboaisrael)
Posts: 68
Trusted Member
Topic starter
 

Bom dia, pessoal.

Criei um formulário para acessar, consultar e alterar uma base de dados .mdb via ADO. A consulta funcionou perfeitamente, porém tenho tido problemas com o formulário.

Após realizar a consulta, os itens do recordset são copiados para uma planilha temporária. Esta planilha é a base para popular uma listbox no meu formulário. Quando eu mando popular, os dados aparecem perfeitamente na listbox. Porém quando tento selecionar alguma linha da listbox, para poder alterar o registro por exemplo, ele me dá o erro que aparece na figura abaixo:

Notei que quando faço uma busca muito ampla, sem Where na string SQL, ele me retorna esse erro antes mesmo de eu tentar selecionar algum registro no listbox. O erro ocorre enquanto o listbox está sendo populado e após o erro os registro são populados com erro (Ex: João da Silva, vira **#$$@).

Já testei em 3 máquinas diferentes, todas com Hardware razoável e obtive o mesmo erro.

Alguém já viu isso? Sabe como posso solucionar?

Atenciosamente,

 
Postado : 08/04/2013 8:35 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Enquanto isso..
Leia:
http://forum.clubedohardware.com.br/res ... nte/643989
http://comunidade.itlab.com.br/eve/foru ... 6811019302

Talvez lhe ajude...
Att

 
Postado : 08/04/2013 9:24 am
(@gamboaisrael)
Posts: 68
Trusted Member
Topic starter
 

Obrigado, Ale.

Mas acredito que, infelizmente, os casos não se aplicam ao que acontece aqui.

Atenciosamente,

 
Postado : 08/04/2013 9:48 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Voce já esperimentou "popular" o listbox diretamente do recorset (sem grava-lo na planilha). De qantos registros x colunas esta falando.
Pode postar um exemplo?

 
Postado : 08/04/2013 11:18 am
(@gamboaisrael)
Posts: 68
Trusted Member
Topic starter
 

Boa tarde, Reinaldo. Não tentei popular diretamente do recordset, infelizmente não imagino como fazer isso.

Em 80% das consultas o resultado tem 7 colunas e menos de 10 linhas.

No caso de uma consulta a toda a base de dados, sem condições, o resultado tem 7 colunas e algo em torno de 1200 linhas.

A quantidade de dados é pequena, porém o erro ocorre até em consulta de 1 linha x 7 colunas.

Quanto ao exemplo, preciso preparar um, pois o arquivo original tem dados privados da empresa.

Atenciosamente,

 
Postado : 08/04/2013 11:33 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Vamos então aguardar o exemplo, que ficará mais simples.
Para popular (aqui é um listview) diretamente;a sintaxe e +/- assim:

    banco.Open sql, cx, adOpenKeyset, adLockOptimistic
    With listview1
            .ListItems.Clear
      While Not banco.EOF = True
        Set lst = .ListItems.Add(, , banco(0))
            For I = 1 To banco.Fields.Count - 1
                If I = 5 Then
                    lst.SubItems(I) = banco(I) 'Format(banco(i), "Currency")
                Else
                    lst.SubItems(I) = banco(I)
                End If
            Next
        banco.MoveNext
      Wend
    End With
 
Postado : 08/04/2013 12:56 pm
(@gamboaisrael)
Posts: 68
Trusted Member
Topic starter
 

Boa tarde, Reinaldo.

Vou tentar popular o listbox aqui da maneira como você sugeriu. Se eu tiver sucesso, aviso aqui!

Envio um modelo do arquivo em anexo, conforme sugerido.

Atenciosamente,

 
Postado : 08/04/2013 1:58 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Segue com alterações, veja se lhe atende

 
Postado : 09/04/2013 8:45 am
(@gamboaisrael)
Posts: 68
Trusted Member
Topic starter
 

Boa tarde, Reinaldo.

Muito obrigado pela ajuda! Seu trabalho ficou show de bola. Ainda estou digerindo o código que você adicionou ao projeto.

No entanto notei uma coisa enquanto tentava entender o código. Existem alguns casos em que eu clico no registro no listview e ele não executa toda a função "ProcuraIndiceRegistroPodId". Ele encerra a execução justamente no momento em que deveria preencher o label "lblID" com o valor do rst("ID"). Como ele não altera o valor do lblID o código não altera o registro se eu clicar no botão de incluir/salvar, mas acaba por duplica-lo como um novo registro. Se você quiser ver este fato pode tentar alterar qualquer um dos registros do dia 01/04/2013. Isto não acontece para todos os registros do banco de dados, mas acontece em uma quantidade significativa dos que eu tentei alterar.

Mais uma vez, muito obrigado pela força.

Vou continuar testando e tentando resolver isso aqui.

Atenciosamente,

 
Postado : 09/04/2013 10:53 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Por haver registros incompletos, ao "achar" lgum campo do registro = "null" (esse e o valor que o BD devolve), e interrompindo o processamento nesse ponto.
Segue arquivo com tratamento (na rotina para alteração). Veja se atende

 
Postado : 09/04/2013 11:57 am
(@gamboaisrael)
Posts: 68
Trusted Member
Topic starter
 

Perfeito, Reinaldo!

Muito obrigado!

 
Postado : 09/04/2013 12:28 pm