Retorna um ClientDataSet
Boa Noite a todos, eu estou montando uma função que deverá retornar um ClientDataset só que não estou conseguindo. Segue a função que criei, se vocês puder verificar onde estou errando eu fico grato.
Function RetornDados_CPGREC(iCPRCOD :Integer;
sCodigoEmpresa :String;
iTipoRegistro :Integer;
Var dDataSet :TDataSet ) : Boolean ;
Grato pela atenção
Function RetornDados_CPGREC(iCPRCOD :Integer;
sCodigoEmpresa :String;
iTipoRegistro :Integer;
Var dDataSet :TDataSet ) : Boolean ;
Grato pela atenção
Sergiowilson.sp
Curtidas 0
Respostas
Giordanocwb
21/12/2007
O cabeçalho da função está correto, qual o seu problema??
Usar a função, ou está dando erro dentro da função??
Coloque o código de chamada e o código da função que fica mais fácil identificar o problema.
T+
Usar a função, ou está dando erro dentro da função??
Coloque o código de chamada e o código da função que fica mais fácil identificar o problema.
T+
GOSTEI 0
Aasn
21/12/2007
Olá giordanocwb,
pelo visto essa sua função só irá retornar True ou False não o ClientDataSet como você deseja.
o correto seria mais ou menos assim:
Function RetornDados_CPGREC(iCPRCOD :Integer;
sCodigoEmpresa :String;
iTipoRegistro :Integer;
Var dDataSet :TDataSet ) : TClientDataSet;
além do corpo da função é claro...
[]´s
AASN
pelo visto essa sua função só irá retornar True ou False não o ClientDataSet como você deseja.
o correto seria mais ou menos assim:
Function RetornDados_CPGREC(iCPRCOD :Integer;
sCodigoEmpresa :String;
iTipoRegistro :Integer;
Var dDataSet :TDataSet ) : TClientDataSet;
além do corpo da função é claro...
[]´s
AASN
GOSTEI 0
Micheus
21/12/2007
Segue a função que criei, se vocês puder verificar onde estou errando eu fico grato.
Function RetornDados_CPGREC(iCPRCOD :Integer; sCodigoEmpresa :String; iTipoRegistro :Integer; Var dDataSet :TDataSet ) : Boolean ;
[b:74269f4c6a]sergiowilson.sp[/b:74269f4c6a], como o colega [b:74269f4c6a]giordanocwb[/b:74269f4c6a] disse, o cabeçalho da função está correto. Faltou vc por o código dentro caso seja onde ocorre o tal erro.
Este erro é de compilação? Se for, vc teria declarado na cláusula uses as units DB (para TDataSet) e DBClient (para TClientDataSet)?
Ou ainda, poderia ser um erro como: [i:74269f4c6a]Type of actual and formal var parameters must be identical[/i:74269f4c6a]
O que parece razoável já que vc fala em retornar ClientDataSet, mas seu parâmetro está declara como TDataSet. Assim, ao tentar passar como parâmetro uma variável do TClientDataSet, vc receberá este erro de compilação.
Se for este o caso, apenas mude a declaração para um TClientDataSet (ou o tipo do dataset que vc deseja realmente trabalhar)
Ou seria erro de execução?
Sempre que quiser auxílio quanto a um suposto erro, seria pelo menos interessante que vc postasse a mensagem de erro original. ;)
pelo visto essa sua função só irá retornar True ou False não o ClientDataSet como você deseja.
[b:74269f4c6a]AASN[/b:74269f4c6a], na verdade a função dele tem potencial para fazer o que ele quer sim. Desde que ela esteja funcionando corretamente.Ele pode sim retornar o DataSet e ainda o resultado booleano. Veja um exemplo ilustrativo:
uses DB, DBClient; ... function RetornDataSet(SQLCommand :string; var dDataSet :TDataSet) :Boolean; begin dDataSet := TClientDataSet.Create(nil); with dDataSet as TClientDataSet do begin CommandText := SQLCommand; try Active := True; Result := True; except Result := False; FreeAndNil(dDataSet) end; end; end; procedure TForm1.BtnSomaClick(Sender :TObject); var Soma :Double; DataSet :TClientDataSet; begin // se for manter a função com TDataSet, // tem que fazer o typecast aqui if RetornDataSet(´Select * from teste´, TDataSet(DataSet)) then try while not DataSet.EOF do begin Soma := Soma +DataSet.FieldByName(´CampoX´).AsFloat; DataSet.Next; end; finally FreeAndNil(DataSet); end end;
Abraços
GOSTEI 0
Sergiowilson.sp
21/12/2007
Obrigado pelo auxilio de todos, vou corrigir o meu código, assim que testá-lo novamente postarei o resultado.
Não tenho muita intimidade com Delphi, a linguagem com a qual trabalho profissionalmente é o Cobol, dá pra sentir a diferença, né !
Obrigado pela força !
Não tenho muita intimidade com Delphi, a linguagem com a qual trabalho profissionalmente é o Cobol, dá pra sentir a diferença, né !
Obrigado pela força !
GOSTEI 0
Aasn
21/12/2007
Olá micheus,
No caso do seu exemplo ilustrativo, ele não está retornando um DataSet novo, ele está trabalhando com um DataSet passado por referencia, mas que já existia antes da chamada a função, diferentemente da minha sugestão no post.
Abraço,
AASN
AASN, na verdade a função dele tem potencial para fazer o que ele quer sim. Desde que ela esteja funcionando corretamente.
Ele pode sim retornar o DataSet e ainda o resultado booleano. Veja um exemplo ilustrativo:
No caso do seu exemplo ilustrativo, ele não está retornando um DataSet novo, ele está trabalhando com um DataSet passado por referencia, mas que já existia antes da chamada a função, diferentemente da minha sugestão no post.
Abraço,
AASN
GOSTEI 0