GARANTIR DESCONTO

Fórum Erro Herança Forms #381584

16/07/2010

0

Bom dia pessoal!   Não estou conseguindo resolver um erro que está acontecendo comigo.   O que acontece é que tenho dois Forms que são herança de outro, eles funcionam normal, más quando abro o form que é o pai, fecho e vou abrir os outros dois que são os filhos dele, os dois da uma mensagem de erro e não abre mais.   O erro que mostra é o seguinte: Error reading dxBdProduto.DataField: FormPai: Field 'COD_PROD' not found.   Se alguém conseguir me ajudar fico muito grato pois já faz um tempo que estou com esse problema e não consigo resolver.   Leandro.
Leandro Ferreira

Leandro Ferreira

Responder

Posts

16/07/2010

Eriley Barbosa

Isso acontece com forms herdados comigo também, o que faço é sempre abrir o formPai primeiro, não fecho e depois abro os forms filhos, ou seja, quando estiver trabalhando com os forms filhos o form pai deverá estar aberto, mesmo que tu não vá trabalhar nele.   Atenciosamente   Eriley
Responder

Gostei + 0

16/07/2010

Leandro Ferreira

Bom dia Eriley!   Você poderia me fornecer um exemplo de sua explicação?   Não ficou muito claro pra mim sua explicação, você dando um exemplo entenderei melhor com certeza.   Fico no aguardo.
Responder

Gostei + 0

16/07/2010

Emerson Nascimento

seus datasets estão num datamodule? se estiverem, recomendo colocá-los nos formulários.

se você trabalhar com clientdatasets, coloque-os no form. nesse caso não precisa do dataset origem no formulário.

Responder

Gostei + 0

16/07/2010

Eriley Barbosa

File->Open Project-> abra seu projeto; File->Open -> Abra o seu formulario pai e não o feche. File -> Open->Abra o seu formulário filho   Toda vez que for trabalhar num formulario filho o formulario pai tem que estar aberto.   Atenciosamente   Eriley
Responder

Gostei + 0

16/07/2010

Leandro Ferreira

Eriley acho que você entendeu errado, quando disse que dava erro era em tempo de execução não quando estou programando.   Emerson pelo que entendi aqui, o dataset eh declarado pra ficar diinamico quando carregar o form. Não está nem no DM nem no FORM. Acho que por isso que ele esta dando este erro.   Segue uma parte do codigo quando da um close e um open no form pai. Pode ser ai o erro:   procedure OpenCloseTable ( Form : TForm; Acao : Integer );
var t : Integer;
begin     with Form do begin
        if Acao = OC_OPEN  then
           for t := 0 To ComponentCount - 1 do
               if (Components[t] is TDBGrid) then
                  (Components[t] as TDBGrid).DataSource.DataSet.Open
               else if (Components[t] is TdxDBGrid) then
                  (Components[t] as TdxDBGrid).DataSource.DataSet.Open;         if Acao = OC_CLOSE then
           for t := 0 To ComponentCount - 1 do
               if (Components[t] is TDBGrid) then
                  if (Components[t] as TDBGrid).DataSource.DataSet.Active then
                     (Components[t] as TDBGrid).DataSource.DataSet.Close
               else if (Components[t] is TdxDBGrid) then
                  if (Components[t] as TdxDBGrid).DataSource.DataSet.Active then
                     (Components[t] as TdxDBGrid).DataSource.DataSet.Close;
     end; end; procedure OpenCloseTable ( DataSet : TDataSet; Acao : Integer );
begin       if Acao = OC_OPEN  then
         DataSet.Open;       if Acao = OC_CLOSE then
         DataSet.Close; end;
Responder

Gostei + 0

16/07/2010

Emerson Nascimento

você precisa verificar pra onde o Datasource ligado à grade está apontando. se for para um dataset comum não vai dar certo. é preciso que o Dataset esteja em form herdado.

por exemplo:
imagine que seu form pai aponte para um dataset num datamodule qualquer.
ao criar o form, você altera a instrução SQL desse dataset.

daí você abre um form herdado que também aponta para o mesmo dataset porém, no momento da criação do form herdado ele altera a instrução SQL.
nesse momento os campos esperados no form pai já foram alterados pelo form filho.

daí você volta para o form pai e ocorre o erro. você fecha o form pai, abre de novo - novamente ele altera a instrução SQL. agora o form filho é que vai gerar um erro.

creio que seja esse seu problema.


Responder

Gostei + 0

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

Aceitar