Fórum Passando um objeto como paramentro de uma função #240340
29/06/2004
0
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
Curtir tópico
+ 0Posts
29/06/2004
Michael
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!
Gostei + 0
29/06/2004
Michael
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!
Gostei + 0
30/06/2004
Mascotepc
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
Gostei + 0
30/06/2004
Paulo_amorim
Que erro aparece?
Tente nao colocar
dmAppServer.objSql.CommandText := strSql;
mas sim
objSQL.CommandText := strSQL
Espero que ajude
Até+
Gostei + 0
30/06/2004
Mascotepc
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;
Gostei + 0
30/06/2004
Michael
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!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)