Inaccessible Value - Valor do DataSet

19/01/2006

0

Ola Pssoal
Estou com este erro que está muito estranho para mim. Vou tentar explicar:

Tenho uma função que abre uma Determinada tabela passando uma SQL deSelect para um ClientDataSet. Neste mesmo ClientDataSet, no DataSet Ligado a ele, eu tenho uma outra rotina ligada ao evento AfterSroll, isto é, toda vez que eu abrir ou mover o ponteiro deste DataSet, minha rotina vai ser disparada.
Nesta Rotina de AfterScroll, eu acesso os valores do ClientDataSet ligado a este DataSet usando a variável Self. No meu form, eu coloquei um DataSource que liga este ClientDataSet:

ShowMessage(Self.DAtaSource.DataSet.FieldValues[´CAMPO´]);

Quando eu rodo essa rotina, dá o erro de Access Violation e o Watch List aparece nesse mesmo campo o erro:

Self.DAtaSource.DataSet.FieldValues[´CAMPO´]) : Inaccessible Value

Minhas dúvidas são as seguintes:

1) Ao executar o Open em um ClientDataSet, ele dispara o evento AfterScroll, mas essa tabela já está aberta?
2) Se estiver eu poderia acessar todos os campos como eu estou fazendo acima certo?
3) O que ocasiona este erro? Assim pode ficar mais fácil para eu achar meu erro.

Valew a todos


Seu_madruga

Seu_madruga

Responder

Posts

19/01/2006

Seu_madruga

Complementando minha dúvida pois sei que está muito confusa:

Dentro do Evento AfterScroll, depois que eu ja dei um Open da Tabela e os registros já estão selecionados, dentro do evento eu tenho acesso aos Registros. Se eu fizer DataSet.FieldValues[´Campo´], eu consigo acessar ele normalmente. Logo após isso, dentro do evento ainda localizado no DataModule, eu acesso uma função do Form de cadastro desse ClientDataSet:

procedure TDM.cds1AfterScroll(DataSet: TDataSet);
var
i : integer;
begin
i := DataSet.FieldValues[´CAMPO´]; -->> OK

frmCDS1.SelecionaCampos;
end;

procedure TfrmCDS1.SelecionaCampos;
var
i : Integer;
begin
i := DataSet.FieldValues[´CAMPO´]; -->> ERRO
end;

Enfim, quando eu acesso o valor do Client dentro do DM, funciona, mas quando eu acesso ele fora do DataSet, dá erro.
PS: Só dá erro durante o Open e o AfterScroll, se eu não chamar a função SelecionaCampos dentro od evento AfterScroll e chamar ela depoi, funciona normalmente.


Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar