EoleException with message ´Field quot;pusuarioquot; not f
Pessoal que erro é este
[b:bbde282d57]raise Exception class EoleException with message ´Field ´pusuario´ not found´.[/b:bbde282d57]?
Estou tentando chamar um procedimento, usando os componentes DataSetProvider + ClientDataSet, e está mostrando este erro acima.
A procedure é esta aqui
Que eu saiba ai o ´pusuario´ é um parametro e não um Field como está mostrando o erro.
No DatasetProvider a propriedade poAllowCommandText está como true para poder executar a o SQL, e no ClientDataSet estão todos os TFields dentro do Fields Editor.
Preciso usar o ClientdataSet para atualizar a tabela por causa do REFRESH, porque no IBDataSet (IBX) não funciona o refresh e não posso dar um close/open na tabela, por causa que é um DBGrid que marcação de CheckBox. E preciso que o cursos fique na linha que eu marquei.
O comando que eu uso para marcar é este:
Grato pela ajuda.
[b:bbde282d57]raise Exception class EoleException with message ´Field ´pusuario´ not found´.[/b:bbde282d57]?
Estou tentando chamar um procedimento, usando os componentes DataSetProvider + ClientDataSet, e está mostrando este erro acima.
A procedure é esta aqui
procedure TfrmAdministracao.SQL_CheckBoxGrid; begin with ibEmpresas do begin Close; CommandText := ´ select a.marcar_check, ´+ ´ a.nmempresa, ´+ ´ a.cdempresa, ´+ ´ b.idusuario, ´+ ´ b.marcarbox ´+ ´ from empresa a ´+ ´ left join permissoesuser b ´+ ´ ON (a.cdempresa = b.idempresa)´+ ´ and b.idusuario = :pusuario and ´+ ´ b.marcarbox = ´´T´´ ´; Params.ParamByName(´pusuario´).AsInteger := dsPrincipal.DataSet.FieldByName(´id_usuario´).AsInteger; Open; end; end;
Que eu saiba ai o ´pusuario´ é um parametro e não um Field como está mostrando o erro.
No DatasetProvider a propriedade poAllowCommandText está como true para poder executar a o SQL, e no ClientDataSet estão todos os TFields dentro do Fields Editor.
Preciso usar o ClientdataSet para atualizar a tabela por causa do REFRESH, porque no IBDataSet (IBX) não funciona o refresh e não posso dar um close/open na tabela, por causa que é um DBGrid que marcação de CheckBox. E preciso que o cursos fique na linha que eu marquei.
O comando que eu uso para marcar é este:
procedure TfrmAdministracao.DBMarcarDadosCellClick(Column: TColumn);
begin
{se der um clique na célula a tabela vai entrar em modo de edição}
if Column.FieldName = ´MARCARBOX´ then
begin
{Criei esta SP para deletar quando estiver marcado ou incluir quando não tiver marcado}
try
with ibSPPermissoes do
begin
Prepare;
Params[0].AsInteger := ibUsuario.FieldByName(´ID_USUARIO´).AsInteger;
Params[1].AsInteger := ibEmpresasCDEMPRESA.AsInteger;
params[2].AsString := ´T´;
ExecProc;
Unprepare;
end;
if not dm.Transaction.InTransaction then
dm.Transaction.StartTransaction;
dm.Transaction.CommitRetaining;
{Atualiza o CDS para deixar a dbgrid atualizada}
ibEmpresas.Refresh;
DBGrid2.Refresh;
//ibEmpresas.Close;
//ibEmpresas.Open;
except
on E:Exception do
begin
if not dm.Transaction.InTransaction then
dm.Transaction.StartTransaction;
dm.Transaction.RollbackRetaining;
MessageDlg(´Ocorreu um erro neste processo. ´ +#1313 +´Erro gerado: ´+13+
E.Message + 1313 + ´Todo o processo foi abortado!´, mtError, [mbOk],0);
Abort;
end;
end; //Final try/except
end;
end;Grato pela ajuda.
Adriano_servitec
Curtidas 0
Respostas
Adriano_servitec
25/10/2008
Descobri o problema, é que no IBDataSet(IBX) não tinha colocado o [b:bc1c02f0ae]´:Pusuario´[/b:bc1c02f0ae] como Params, então não tinha o parametro na propriedade params do ClientDataSet, e ele reconhevia como um Fields.
Problema resolvido.
Valeu pessoal.
Problema resolvido.
Valeu pessoal.
GOSTEI 0
Adriano_servitec
25/10/2008
Agora minha duvida é saber pq, o IBX(IBDataSet) não aceita um refresh para atualizar a tabela? Fiz uns testes aqui e só atualiza depois de um Close/Open, enquanto o ClientDataSet linkado ao DataSetProvider linkado ao ibDataSet aceita?
GOSTEI 0