Senhores, bom dia! Estou tentando utilizar o evento onDataRequest do DataSetProvider e ClientDataSet mas como sou novato em aplicações N-tier, creio que esteja fazendo algo de errado. Solicito, dentro das possibilidades de cada um, um auxílio quando ao referido procedimento, e me apontem o erro para que possa corrigi-lo. Abaixo, o erro que dá quando executo a rotina, o procedimento no onDataRequest do DataSetProvider e a chamada utilizando o evento DataRequest do ClientDataSet. Estou utilizando Delphi 2009 e já adicionei a unit Variants nos respectivos DataModules e RemoteDataModule.
Agradeço desde já a atenção dispensada. Fraterno abraço a todos, Carlos Erro que ocorre quando executo a pesquisa: `Remote error: Unsupported variant type: 000C' Chamada no onDataRequest do DataSetProvider function TsmConsulta.dspLocServidorDataRequest(Sender: TObject; Input: OleVariant): OleVariant; const mSql = 'select (s.rg) as ''R.G.'', (s.nome) as ''Nome Completo'', '+ '(s.codCargo) as ''Cód. Cargo'', (s.ender) as ''Lotação'' '+ 'from ((servidor s inner join cargo c on s.codCargo = c.codCargo) '+ 'left join unidade u on s.ender = u.ender) where(0=0)'; begin if (Input[0] <> '') then sdsLocServidor.CommandText := mSql+ ' and s.rg like ''' + QuotedStr(Input[0]) + ''''; if (Input[1] <> '') then sdsLocServidor.CommandText := mSql+ ' and s.nome like ''' + QuotedStr(Input[1]) + ''''; if (Input[2] <> '%') then sdsLocServidor.CommandText := mSql+ ' and s.codCargo = ''' + QuotedStr(Input[2]) + ''''; if (Input[3] <> '%') then sdsLocServidor.CommandText := mSql+ ' and s.ender = ''' + QuotedStr(Input[3]) +''''; end; Chamada no lado Cliente: procedure TfLocServidor.aLocServExecute(Sender: TObject); begin try dmConsulta.cdsLocServidor.Close; dmConsulta.cdsLocServidor.DataRequest(VarArrayOf([mkeRg.Text, eNome.Text, dblcCargo.Text, dblcConUnidade.Text])); dmConsulta.cdsLocServidor.Open; except Application.MessageBox('Ocorreu um erro ao tentar efetuar a consulta solicitada.' + #13#10 + 'Tente novamente, e se o problema persistir, efetue' + #13#10 + 'contato com o Administrador do Sistema.', 'Ocorreu um erro.', MB_OK + MB_ICONSTOP); end;