Fórum Passando um objeto como paramentro de uma função #240340

29/06/2004

0

Boa tarde,
estou criando uma procedure onde preciso passar um objeto do meu projeto como parametro.
Esta procedure deve receber uma string que contém uma instrução SQL e um objeto do tipo TSQLDataSet .

Eis a procedure que estou tentando fazer

procedure TAppServerSiscomin.atribuiSQL(const strSql: WideString; objSql: OleVariant);
begin
dmAppServer.objSql.CommandText := strSql;
end;
Sei que esta não é a forma correta. Alguém poderia me dizer como fazer esta procedure ?

OBS: O meu projeto é um sistema multicamada e esta função esta sendo criada atravé do Type Library.

Obrigado.

Marcelo.


Mascotepc

Mascotepc

Responder

Posts

29/06/2004

Michael

Olá amigo!

Não tenho muita experiência ainda em aplicações muiticamandas, portanto não sei se isso irá servir para você.

Você poderia fazer simplesmente isso:

procedure TAppServerSiscomin.atribuiSQL(const strSql: WideString; objSql: TSQLDataSet); 
...


Na verdade você não passa o objeto diretamente para a função, apenas o endereço dele na memória. Então a sua função estará acessando o meso objeto e não uma cópia dele, mesmo que este esteja fora do escopo da função.

Se isso servir para resolver seu problema, me avise, pois fiquei curioso agora.

Abraços!


Responder

Gostei + 0

29/06/2004

Michael

Esqueci de um detalhe importante, Marcelo.

Como você está passando o endereço da memória para a função, não é necessário referenciar o DataModule, apenas o objeto em si. Algo como:

objSQL.CommandText := SQL;


Esqueci de dizer isso na outra mensagem... :oops:

Abraços!


Responder

Gostei + 0

30/06/2004

Mascotepc

Ola,
tentei dessa forma que vc demostrou, só que ele me retorna um erro falando que a procedure esta declarada de uma maneira diferente da declaração contida na interface do Servidor. Ai fui lá na declarção de métodos do Servidor (View -> Type Library ) e tentei adicionar este parametro (objSql) com o tipo TSqlDataSet, mas não consigo criá-lo com este DataType. Ele só aceita os DataTypes lá pré-estabelecidos.

Obrigado pela atenção.

OBS: Se conseguir resolver o problema entro em contato com vc.
vc poderia me passar seu e-mail para lhe passar maiores detalhes ?

Marcelo


Responder

Gostei + 0

30/06/2004

Paulo_amorim

Olá

Que erro aparece?

Tente nao colocar

dmAppServer.objSql.CommandText := strSql;

mas sim
objSQL.CommandText := strSQL

Espero que ajude
Até+


Responder

Gostei + 0

30/06/2004

Mascotepc

Já coloquei dessa forma: objSQL.CommandText := strSQL

o erro é o sequinte :

Declaration of ´atribuiSql´ differs from previous declaration

olhem a função como está

procedure TAppServerSiscomin.atribuiSql(const strSql: WideString; objSql: TSQLDATASet);
begin
objSql.CommandText := strSql;
end;


Responder

Gostei + 0

30/06/2004

Michael

Olá amigo.

O erro que você reportou indica que a primeira declaração da procedure está diferente da segunda. O correto seria modificar a primeira de forma que ambas ficassem iguais, mas eu acredito que você já tenha feito isso. Você não pode especificar na cláusula uses a unit que contém o objeto TSQLDataSet? Assim ao compilar o objeto seria reconhecido.

Meu email está no final da mensagem.

Abraços!


Responder

Gostei + 0

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

Aceitar