Erro E2171 Variable Self inaccessible here due to optimization
Pessoal, td bem?
Comecei a criar esta procedure abaixo porém no final dela, na ultima variável aparece o seguinte erro:
//E2171 Variable Self inaccessible here due to optimization
O que fiz de errado?
Como proceder?
Atenciosamente,
Comecei a criar esta procedure abaixo porém no final dela, na ultima variável aparece o seguinte erro:
//E2171 Variable Self inaccessible here due to optimization
procedure TfrmCadCaixa.CarregaDados;
begin
uSala.frmSala.TrazSalaSelecionada;
uSala.frmSala.TrazEstanteSelecionada;
uSala.frmSala.TrazArmarioSelecionado;
uSala.frmSala.TrazPrateleiraSelecionada;
TrazLinhaTitulo;
with uDtm.frmDtm.Qry_BuscaArmazenamento do
begin
Close;
SQL.Clear;
SQL.Add('Select a.*, d.*, t.*');
SQL.Add('From Armazenamento a,');
SQL.Add(' Departamento d,');
SQL.Add(' Titulo t');
SQL.Add('Where a.nr_box =' + inttostr(vBox) + '');
SQL.Add('and a.id_prateleira = ' + IntToStr(vIdPrateleira) + '');
SQL.Add('and a.id_armario = ' + IntToStr(vIdArmario) + '');
SQL.Add('and a.id_estante = ' + IntToStr(vIdEstante) + '');
SQL.add('and a.id_titulo = t.id_titulo');
SQL.add('and a.id_departamento = d.id_departamento');
SQL.Add('and a.id_tparmazenamento = 2');
Open;
edtNumeroCaixa.Text := FieldByName('nr_caixa').AsString;
cbxEmpresaCaixa.Text:= FieldByName('ic_empresa').AsString;
edtFilial.Text := FieldByName('ic_filial').AsString;
cbxDepartamento.ItemIndex := FieldByName('id_departamento').AsInteger;
cbxTitulo.Text := FieldByName('ds_titulo').AsString;
edtDtFim.Text := FieldByName('dt_caixafim').AsString;
mDescricao.Text := FieldByName('ds_armazenamento').AsString;
edtPosicao.Text := FieldByName('ds_posicao').AsString;
edtDtIni.Text := FieldByName('dt_caixaini').AsString;
end;
end;
O que fiz de errado?
Como proceder?
Atenciosamente,
Flavio Silva
Curtidas 0
Respostas
Claudia Nogueira
28/11/2012
Quando clica no erro foca em qual linha do código?
Que componente é esse cbxDepartamento?
Que componente é esse cbxDepartamento?
GOSTEI 0
Flavio Silva
28/11/2012
Claudia, o erro aparece após os campos receberem os dados do banco (FieldByName).
cbxDepartamento é um combobox.
Sinceramente ainda não encontrei o erro.
cbxDepartamento é um combobox.
Sinceramente ainda não encontrei o erro.
GOSTEI 0
Claudia Nogueira
28/11/2012
Mais uma coisa, você marcou alguma linha pra debugar?
Se marcou desmarca e tenta compilar.
Só pra fazer um teste.
Se marcou desmarca e tenta compilar.
Só pra fazer um teste.
GOSTEI 0
Flavio Silva
28/11/2012
Desmarquei a linha onde debuguei e o campo edtdtfim.text não trouxe o valor do fieldbyname('dt_caixafim').asstring;
GOSTEI 0
Claudia Nogueira
28/11/2012
Então quando você marcou pra debugar não estava compilando e sim mostrando aquele erro?
GOSTEI 0
Flavio Silva
28/11/2012
Não Claudia, debugando ele também passou pelo erro sem travar, porém não traz as informações necessárias.
GOSTEI 0
Claudia Nogueira
28/11/2012
A tá, achei que não estava compilando.
Se não está mostrando, deve ser por que não está retornando nenhum registro da query.
Eu uso assim:
Alguma coisa não está satisfazendo as condições, ou não tem departamento ou titulo na tabela armazenamento.
Veja se cai na mensagem de Sem Informações.
Se não está mostrando, deve ser por que não está retornando nenhum registro da query.
Eu uso assim:
procedure TfrmCadCaixa.CarregaDados;
begin
uSala.frmSala.TrazSalaSelecionada;
uSala.frmSala.TrazEstanteSelecionada;
uSala.frmSala.TrazArmarioSelecionado;
uSala.frmSala.TrazPrateleiraSelecionada;
TrazLinhaTitulo;
with uDtm.frmDtm.Qry_BuscaArmazenamento do
begin
Close;
SQL.Clear;
SQL.Add('Select a.*, d.*, t.*');
SQL.Add('From Armazenamento a,');
SQL.Add(' Departamento d,');
SQL.Add(' Titulo t');
SQL.Add('Where a.nr_box =' + IntToStr(vBox));
SQL.Add('and a.id_prateleira = ' + IntToStr(vIdPrateleira));
SQL.Add('and a.id_armario = ' + IntToStr(vIdArmario));
SQL.Add('and a.id_estante = ' + IntToStr(vIdEstante));
SQL.add('and a.id_titulo = t.id_titulo');
SQL.add('and a.id_departamento = d.id_departamento');
SQL.Add('and a.id_tparmazenamento = 2');
Open;
if not isEmpty then
begin
edtNumeroCaixa.Text := FieldByName('nr_caixa').AsString;
cbxEmpresaCaixa.Text:= FieldByName('ic_empresa').AsString;
edtFilial.Text := FieldByName('ic_filial').AsString;
cbxDepartamento.ItemIndex := FieldByName('id_departamento').AsInteger;
cbxTitulo.Text := FieldByName('ds_titulo').AsString;
edtDtFim.Text := FieldByName('dt_caixafim').AsString;
mDescricao.Text := FieldByName('ds_armazenamento').AsString;
edtPosicao.Text := FieldByName('ds_posicao').AsString;
edtDtIni.Text := FieldByName('dt_caixaini').AsString;
end
else
ShowMessage('Sem Informações');
end;
end;
Alguma coisa não está satisfazendo as condições, ou não tem departamento ou titulo na tabela armazenamento.
Veja se cai na mensagem de Sem Informações.
GOSTEI 0
Deivison Melo
28/11/2012
Siga as orientações do colaborador acima ou crie um raise e veja qual o erro exato que está ocorrendo...
GOSTEI 0
Flavio Silva
28/11/2012
Deu certo aqui pessoal, valeu...
GOSTEI 0
Rodolpho Silva
28/11/2012
Deu certo aqui pessoal, valeu...
Poste a solução, por favor, somente para documentar...
GOSTEI 0
Flavio Silva
28/11/2012
Ok.
Segue abaixo:
Segue abaixo:
procedure TfrmCadCaixa.CarregaDados;
begin
uSala.frmSala.TrazSalaSelecionada;
uSala.frmSala.TrazEstanteSelecionada;
uSala.frmSala.TrazArmarioSelecionado;
uSala.frmSala.TrazPrateleiraSelecionada;
TrazLinhaTitulo;
with uDtm.frmDtm.Qry_BuscaArmazenamento do
begin
Close;
SQL.Clear;
SQL.Add('Select a.*, d.*, t.*');
SQL.Add('From Armazenamento a,');
SQL.Add(' Departamento d,');
SQL.Add(' Titulo t');
SQL.Add('Where a.nr_box =' + inttostr(vBox) + '');
SQL.Add('and a.id_prateleira = ' + IntToStr(vIdPrateleira) + '');
SQL.Add('and a.id_armario = ' + IntToStr(vIdArmario) + '');
SQL.Add('and a.id_estante = ' + IntToStr(vIdEstante) + '');
SQL.add('and a.id_titulo = t.id_titulo');
SQL.add('and a.id_departamento = d.id_departamento');
SQL.Add('and a.id_tparmazenamento = 2');
Open;
if not isEmpty then
begin
edtNumeroCaixa.Text := FieldByName('nr_caixa').AsString;
cbxEmpresaCaixa.Text:= FieldByName('ic_empresa').AsString;
edtFilial.Text := FieldByName('ic_filial').AsString;
cbxDepartamento.ItemIndex := FieldByName('id_departamento').AsInteger;
cbxTitulo.Text := FieldByName('ds_titulo').AsString;
edtDtFim.Text := FieldByName('dt_caixafim').AsString;
mDescricao.Text := FieldByName('ds_armazenamento').AsString;
edtPosicao.Text := FieldByName('ds_posicao').AsString;
edtDtIni.Text := FieldByName('dt_caixaini').AsString;
end
else
ShowMessage('Sem Informações');
end;
end;
GOSTEI 0