o que é executado antes do OnCreate?

Delphi

22/09/2009

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

Curtidas 0

Respostas

Fausto.malheiros

Fausto.malheiros

22/09/2009

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


GOSTEI 0
Afarias

Afarias

22/09/2009

|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+


GOSTEI 0
Fausto.malheiros

Fausto.malheiros

22/09/2009

[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?


GOSTEI 0
Afarias

Afarias

22/09/2009

|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+


GOSTEI 0
Fausto.malheiros

Fausto.malheiros

22/09/2009

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?


GOSTEI 0
Afarias

Afarias

22/09/2009

|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+


GOSTEI 0
Fausto.malheiros

Fausto.malheiros

22/09/2009

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?


GOSTEI 0
Afarias

Afarias

22/09/2009

Firebird Embedded


T+


GOSTEI 0
Fausto.malheiros

Fausto.malheiros

22/09/2009

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


GOSTEI 0
POSTAR