Esse artigo faz parte da revista Clube Delphi edição 9. Clique aqui para ler todos os artigos desta edição



Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML.


BUGS - Update Pack 5.01

Conheça as soluções trazidas pela mais nova atualização do Delphi

 

Se você visita nossa homepage ou entra regularmente no site da Inprise, já sabe que o Delphi 5 não escapou de uma atualização. E não é apenas uma: além do UpdatePack, já existem atualizações para o pacote ADO Express, e para o TeamSource. Na página de downloads também pode ser encontrado um item bastante interessante: a tradução de strings da VCL para o francês e alemão. A página de downloads do Delphi pode ser conferida em http://www.inprise.com/devsupport/delphi/downloads/index.html#Delphi 5.

O primeiro update pack para esta versão corrige problemas dos mais diversos: acesso a dados, vcl, runtime type library, activex, entre outras. O Update Pack desta versão se encontra em três pacotes, cada um para cada versão do Delphi. Testamos apenas a correção para a versão Enterprise que funcionou muito bem. As correções observadas nesta edição se referem ao uso dos objetos ADO Express. Repare que os problemas apresentados foram corrigidos após a instalação do UpdatePack for Delphi e do Ado Express Update Pack. Vejamos as observações:

 

 

Evento OnFilterRecord

             Quando um dataset ADO possui conteúdo no  evento OnFilterRecord, um erro EOLEException pode ser gerado, no momento da inserção de um novo registro.

 

 

Método GetTableNames

             Este método não lista o nome de views, juntamente com o nome das tabelas do banco de dados.

 

 

Redesenho de Valores

                Caracteres estranhos podem aparecer em campos ADO LookUp. Isto pode acontecer em várias situações. Por exemplo, no redimensionamento dos mesmos, na inserção de novos registros ou na reordenação da tabela.

 

 

DBGRID

             Este objeto possui um comportamento  irregular quando conectado a um objeto ADO Dataset, que possui a propriedade CursorLocation configurada para clUseServer. Além da performance ser mais lenta, a chamada a propriedade RecordCount faz com que todos os dados sejam “fetched”, causando um violento overhead.

            

 

Master/Detail

            Quem utiliza formulários Master/Detail pode ficar mais tranqüilo. No Delphi 5 original, o filtro de um master/detail era perdido  quando a tabela de detalhes era fechada e reaberta, fazendo com que a tabela fosse exibida por completo.

 

 

Master/Detail II

                Ao navegar por um relacionamento master/detail, o usuário ainda poderia se deparar com mais surpresas. Caso um registro vazio na tabela pai fosse encontrado, todos os registros da tabela filho seriam exibidos.

 

 

Método CancelBatch

             Este método não cancela o modo de edição, sendo necessário a chamada ao método Cancel.   

 

 

CancelUpdates

         Conforme descrito na documentação do Delphi, este método deveria executar a mesma operação que o método CancelBatch, porém, isto não acontece.

 

 

ClearFields

         Método proibido! Execute-o (sem o UpdatePack) em um Ado DataSet e receba um exceção “Invalid Variant”

 

 

CancelBatch II

         Se todos os registro de uma tabela forem excluídos, e em seguida o método CancelBatch for executado, nenhum registro será exibido

 

 

Método Clear

             Chamar este método através de um objeto TblobField não adianta. Nada acontece!

 

 

Lookup Fields

             Havia um problema muito estranho com o uso de campos Lookup no ADO. Em alguns casos, a inserção de um registro na tabela causava um erro com a mensagem “Na unknown error has ocurred”. O curioso é que este problema era intermitente.

 

 

Tparameters

                Atribuir múltiplos valores para a propriedade ParamValues de um objeto Tparameteres, causa um Access Violation

 

 

AppendRecord/InsertRecord

             Estes métodos também apresentavam um comportamento no mínimo estranho. Em alguns momentos (geralmente após o fechamento e abertura de uma tabela), utilizá-los poderia causar Access Violation’s.

            

 

DBGRID II

                Executar o método AppendRecord com um objeto TdbGrid conectado a uma tabela vazia pode resultar um erro “Invalid Parameter Exception”

 

 

OnFilterRecord II

             Utilizar este evento e passar False para o parâmetro Accept pode causar um loop infinito.

 

 

MIDAS

             Ao prover um Ado Dataset utilizando um relacionamento Master/Detail (não nested), o aplicativo pode receber um erro “Key Violation”, quando o usuário posicionar o cursor em um registro da tabela pai que não possua filhos.

 

 

Configurando Índices

         Ao alterar o valor de IndexName, as propriedades indexFieldCount e IndexFields não atualizadas automaticamente.

 

 

Gravando registros

            Ao gravar  um registro em um Data desconectado (RDS), caracteres estranhos podem aparecer caso os campos não sejam inicializados.

 

 

Delete

                Se algum erro  for gerado na deleção de um registro, as operações subseqüentes também sofrerão vários erros, obrigando  o usuário a reinicializar o aplicativo.

 

 

Master/Detail III

         Inserir um novo registro na tabela pai causa a exibição de todos os registros da tabela filho.

 

 

RDS Connection

         Fechar um projeto que contém um objeto RDSConnection e um ADO Dataset provoca um erro Access Violation.

 

 

ODBC Provider

                Há um pequeno problema no uso deste motor. Quando a propriedade CommandText recebe uma isntrução SQL com parâmetros no código, ou chamado o método Parameters.Refresh, um erro “Invalid Argument Exception” é gerado.

 

 

CONCLUSÃO

         Obviamente, nós recomendamos a instalação deste Update Pack. As correções não são de tanta gravidade, visto a boa estabilidade da nova versão da ferramenta. O arquivo em Inglês, para versão Enterprise, possui aproximadamente 30 megas. Não se assuste: é pequeno (o update pack para o Visual Studio possui mais de 100 mbs). Na próxima edição prosseguiremos com esta tranquilizante listagem. E não se esqueça: contribua com a comunidade, não deixe de enviar seu bug!