Fórum o que é executado antes do OnCreate? #375144

22/09/2009

0

A problema esta no comando ´Application.CreateForm´.

[b:a619163d50]Application.CreateForm(TComponentClass(FindClass(NomeClasse)), Formulario); [/b:a619163d50] Formulario.ShowModal;


O menu nem chega a executar o showmodal...e no relatorio, o que esta no evento OnCreat nem chega a ser executado.

O que é Application.CreateForm faz?

Dos quase 30 programas...somente um esta com esse problema.


Fausto.malheiros

Fausto.malheiros

Responder

Posts

22/09/2009

Fausto.malheiros

Em tempo: Tem alguma coisa a ver com Banco de Dados, pois antes, quando estava com o interbase 6, demora uns 30 segundo mas abria, agora com o firibird 2.1.5 esta demorando uma eternidade


Responder

Gostei + 0

22/09/2009

Afarias

|A problema esta no comando ´Application.CreateForm´.
|Application.CreateForm(TComponentClass(FindClass(NomeClasse)),
|Formulario);
|Formulario.ShowModal;
|O menu nem chega a executar o showmodal...e no relatorio,
|o que esta no evento OnCreat nem chega a ser executado.
|O que é Application.CreateForm faz?


Application.CreateForm

1) ´instancia´ a variavel a partir da classe informada, passando o objeto Application como Owner

2) se a classe for derivada de um TForm então, requer um Handle para a janela e caso não haja um MainForm definido torna este o MainForm.

Nesse seu caso, vai além deste comando pq o FindClass TEM q achar uma classe previamente registrada (com RegisterClass) de nome ´NomeClasse´

Note que consultas (Query e outros DataSets) q foram deixados com a propriedade Active:=True em DesignTime vão executar ANTES do código OnCreate.


|Dos quase 30 programas...somente um esta com esse problema.

Algum erro?


|Em tempo: Tem alguma coisa a ver com Banco de Dados, pois antes,
|quando estava com o interbase 6, demora uns 30 segundo mas abria,
|agora com o firibird 2.1.5 esta demorando uma eternidade

Com certeza Application.CreateForm não tem nada a ver com banco de dados.


Quanto a seu programa ficar lento quando trocou de IB para FB, apesar de estranho é possível que alguma consulta em particular (unsando IN principalmente) tenha ficado lenta por mudanças do FB, nesse caso seria necessário ajustá-las.

Outras coisas para verificar:

1) Os índices foram criados na nova base?
2) A base foi convertida para ODS 11.1 (Fb 2.1)?
3) A extensão do arquivo NÃO deve ser .GDB
4) Use o cliente correto do Fb 2.1 (gds32.dll do FB 2.1 e não IB6)


T+


Responder

Gostei + 0

22/09/2009

Fausto.malheiros

[b:48a6d2c162]1) Os índices foram criados na nova base?[/b:48a6d2c162]
Sim!

[b:48a6d2c162]2) A base foi convertida para ODS 11.1 (Fb 2.1)?[/b:48a6d2c162]
Ai laskou! Onde vejo esse ODS 11.1? Só pra confirmar por que ja esta rodando.

[b:48a6d2c162]3) A extensão do arquivo NÃO deve ser .GDB[/b:48a6d2c162]
Ainda esta como GDB. Mou mudar.

[b:48a6d2c162]4) Use o cliente correto do Fb 2.1 (gds32.dll do FB 2.1 e não IB6) [/b:48a6d2c162]
Estou usando o ´C:\Arquivos de programas\Firebird\Firebird_2_1\bin\fbclient.dll´....Num é assim não?


Responder

Gostei + 0

22/09/2009

Afarias

|2) A base foi convertida para ODS 11.1 (Fb 2.1)?
|Ai laskou! Onde vejo esse ODS 11.1? Só pra confirmar por que ja esta
|rodando.

Para converter a base para ODS 11.1 é necessário algum trabalho. Primeiro vc tem q fazer um backup da base na versão antiga do IB/FB que ela foi criada. Depois tem q restaurar usando o FB 2.1

E então, pra completar 100¬ sem possibilidade de qualquer problema, é necessário executar o procedimento de atualização de metadata conforme orienta a documentação do FB 2.1

OU

Criar uma base nova com FB 2.1 e jogar os registros da base antiga na nova.

Para saber a versão da sua base vc pode usar o GSTAT:

gstat -h sua_base_firebird

observe o parâmetro ´ODS Version´

Só pra registrar, não é obrigatório a base ser ODS 11.1 para funcionar com FB 2.1. Entretanto, novas funcionalidades/melhorias só vão estar disponíveis com bases ODS 11.1.


|4) Use o cliente correto do Fb 2.1 (gds32.dll do FB 2.1 e não IB6)
|Estou usando o ´C:\Arquivos de
|programas\Firebird\Firebird_2_1\bin\fbclient.dll´....Num é assim não?

Perfeito. *SE* seu componente de acesso/driver é específico para Firebird e está realmente utilizando este cliente/dll.



T+


Responder

Gostei + 0

22/09/2009

Fausto.malheiros

Belezinha.....Agora fechou!

Database ´dbsaneamento.fbd´ Database header page information: Flags0 Checksum12345 Generation253 Page size4096 [b:42cc0e6f85]ODS version11.1[/b:42cc0e6f85] Oldest transaction243 Oldest active244 Oldest snapshot244 Next transaction245 Bumped transaction1 Sequence number0 Next attachment ID13 Implementation ID16 Shadow count0 Page buffers0 Next header page0 Database dialect3 Creation dateSep 22, 2009 15:37:15 Attributes Variable header data: Sweep interval:20000 *END*


Agora só falta encarar os clientes...cada um de um jeito...pois são varios sistemas na mesma maquina...Sybase, Interbase, SQL Microsoft e por ai vai....Outros rodando local e outros em rede....Vai ser só pena que vai voar.

Existe uma forma padrão para instalar o firebird, para que ele não tenha problema com rede, banco de dados diferentes? Ou cada caso é um caso?


Responder

Gostei + 0

22/09/2009

Afarias

|Existe uma forma padrão para instalar o firebird, para que ele não tenha
|problema com rede, banco de dados diferentes? Ou cada caso é um caso?

Usando o instalador padrão já está OK.

O servidor FB não terá problema com nenhum outro servidor de banco de dados instalado, desde que esteja configurado para uma porta que não esteja em uso por nenhum outro programa (a porta padrão é 3050 tb usada pelo IB, eu geralmente mudo)


T+


Responder

Gostei + 0

22/09/2009

Fausto.malheiros

Blz!

Quando for em Rede, Firebird Padrão na porta 3051.

Quando for local, somente aquele programinha que vc me disse qual é, e não to achando o post com o nome...:? :? :? Qual é mesmo?


Responder

Gostei + 0

22/09/2009

Afarias

Firebird Embedded


T+


Responder

Gostei + 0

22/09/2009

Fausto.malheiros

Blz...Mandei uma MP pra vc...mas ta dando erro. Chegou?


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar