Quando chamo o ClientDataSet de outro form da erro.

Delphi

30/06/2004

Olá colegas,

possuo um ClientDataSet chamado ´DataSet_Produto´ que esta no form chamado ´Form_LucroAprox´
e cuja Unit se chama ´uFrmLucroAprox´

Até aí tudo bem.

Em uma outra unit preciso deste DataSet.
Para isto, procedo da seguinte maneira:

[color=blue:61363d8bf9] uFrmLucroAprox.Form_LucroAprox.DataSet_Produto.First;
While Not uFrmLucroAprox.Form_LucroAprox.DataSet_Produto.Eof DO
Begin
...
...
End;[/color:61363d8bf9]
O que preciso é passar o caminho através de uma variável, pois ele poderá variar.
Assim, criei uma variavel tipo string que armazena este caminho.

[color=blue:61363d8bf9] FormularioPedinte := ´uFrmLucroAprox.Form_LucroAprox´;[/color:61363d8bf9]
Aí quando tento chamar:
[color=blue:61363d8bf9] FormularioPedinte.DataSet_Produto.First;[/color:61363d8bf9]
recebo as seguintes mensagens de erro:

[Error] uLucroAprox.pas(346): Record, object or class type required
[Error] uLucroAprox.pas(346): Missing operator or semicolon
[Fatal Error] Ortografando.dpr(63): Could not compile used unit ´ULucroAprox.pas´

e não sei como resolver o problema.

Grato pela atenção dispensada

vonirpereira@certto.com.br


Vanp

Vanp

Curtidas 0

Respostas

Beppe

Beppe

30/06/2004

FormularioPedinte := ´uFrmLucroAprox.Form_LucroAprox´; 
Aí quando tento chamar: 
FormularioPedinte.DataSet_Produto.First; 

Note que FormularioPedinte é uma string, logo, não permite seleção(campos e métodos). Declare-a como frmLucroAprox, ou algo assim.


GOSTEI 0
Cabelo

Cabelo

30/06/2004

Na verdade declare a UNIT na seção USES da UNIT que vc precisa utilizar o ClientDataSet, depois utilize assim :

Form_LucroAprox.DataSet_Produto.First;
While Not Form_LucroAprox.DataSet_Produto.Eof DO
Begin
...
...
End;

espero ter ajudado..

Sem mais

Cabelo


GOSTEI 0
Vanp

Vanp

30/06/2004

Deste jeito funciona.

uFrmLucroAprox.Form_LucroAprox.DataSet_Produto.First;

Mas preciso informar através de uma variável.
Preciso algo do tipo assim:

Var
FormularioPedinte : TForm;
Begin
FormularioPedinte := uFrmLucroAprox.Form_LucroAprox;
FormularioPedinte.DataSet_Produto.First;
End;


GOSTEI 0
Beppe

Beppe

30/06/2004

Acho que vc naum leu meu post. Declare FormularioPedinte como TFrmLucroAprox, ou o nome que vc deu pra classe do form uFrmLucroAprox.


GOSTEI 0
Vanp

Vanp

30/06/2004

Colega,

li sim seu post. Me desculpe se naum possuo o Know how como o seu.
Mas não estou conseguindo fazer funcionar da forma como preciso.
Veja parte do código que fiz com sua ajuda:


[color=blue:4bdac29b63]Function ValoresDataSetIniFin;
Var
FormularioPedinte : TForm_LucroAprox;
Begin

// aqui preciso informar o valor que FormularioPedinte receberá, onforme condições;

[color=red] If ................ then
FormularioPedinte := ..................
If ................ then
FormularioPedinte := ..................
If ................ then
FormularioPedinte := ..................[/color:4bdac29b63]

FormularioPedinte.DataSet_Produto.First;
....
....

End;[/color]


Foi assim que entendi. Mas dessa forma não resolve meu problema. Pois terei apenas um valor para FORMULARIOPEDINTE. E eu preciso informar outros valores, dependendo da situação. E esta informação preciso passar
no código que pus em vermelho.


GOSTEI 0
Vanp

Vanp

30/06/2004

a cor vermelha saiu errado. Mas é a parte dos Ifs.


GOSTEI 0
Beppe

Beppe

30/06/2004

Vejo duas soluções:

1) Ao invés de pegar o form, pegue uma referência ao DataSet apenas.

ou

2) Faça cada formulário herdar de uma classe(esta sim descende de TForm) que contenha o DataSet.

Se vc precisar apenas o DataSet, (1) é mais viável.


GOSTEI 0
Vanp

Vanp

30/06/2004

Bepe,

obrigado pela disposição. Consegui resolver meu problema.


GOSTEI 0
POSTAR