Motta 645 Denunciar post Postado Janeiro 3, 2013 Sr(a)s : Tenho aqui uma aplicação escrita por um 3º. Esta aplicação lê um ClientDataSet e grava uma planilha Excel baseada num modelo. Funciona bem para a maioria dos casos, porém para alguns casos (que eu creio ser o volume dos dados) a planilha gera uma exceção de Access Violation (?!) 1) Alguem já passou por isto ? 2) A minha desconfiança do volume de dados procede (funcina quando o volume é pequeno) ? 3) Pode ser alguma outra coisa ? 4) Não achei a documentação das propriedades deste Objeto do Excel, onde acho isto ? 5) Existe alguma propriedade/método que aumente o memória/capacidade da planilha ? 6) A "bagaça" pode estar no Excel ? Observação : 1) O Objeto é criado assim : MSExcel := CreateOleObject('Excel.Application'); 2) versões Delphi 2009 Excel 2007 Modelo salvo como .xlsx Desde já grato. Compartilhar este post Link para o post Compartilhar em outros sites
Eisenheim 67 Denunciar post Postado Janeiro 7, 2013 Olá amigo! Eu tive um problema semelhante, no entanto ocorria o "AV" quando eu executava em um primeiro momento para gerar minha planilha e em seguida o fize-se novamente. No meu caso, o problema era devido não estar destruindo o objeto responsável pela manipulação do excel. Depois que o fiz o problema do "AV" não aconteceu mais. Até a próxima. :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Janeiro 7, 2013 Esta aplicação não destroe o Objeto pois permite a visualização do mesmo com o programa aberto, cheguei a alterar a app para destruir o objeto mas a planilha ficava zerada. A solução seria não permitir a visualização ou tenho como destruir o objeto com a planilha aberta ? Segue parte relavante do código em questão. procedure TfrmPrinc.btnPlanilhaClick(Sender: TObject); begin ... Application.ProcessMessages; screen.Cursor := crHourGlass; try MSExcel := CreateOleObject('Excel.Application'); MSExcel.Application.DisplayAlerts := False; try ExcelBook := MSExcel.WorkBooks.Open(sdPlanilha.FileName); ... MSExcel.Application.DisplayAlerts := False; MSExcel.Visible := True; except On E : Exception do begin MessageDlg('Erro gerando planilha: ' + #13#10 + E.Message, mtError, [mbok],0); MSExcel.Application.Quit; MSExcel := null; end; end; finally pnlAguarde.Visible := False; Screen.Cursor := crDefault; end; end; De qualquer forma grato. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Janeiro 14, 2013 Na realidade o problema era que um campo do BD estava em branco e um erro no tratamento deste fazia com o planilha se "perdesse".O mais puro peopleoware. Resolvido. Compartilhar este post Link para o post Compartilhar em outros sites