Fórum Erro E2171 Variable Self inaccessible here due to optimization #429993
28/11/2012
0
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
Curtir tópico
+ 0Posts
28/11/2012
Claudia Nogueira
Que componente é esse cbxDepartamento?
Gostei + 0
28/11/2012
Flavio Silva
cbxDepartamento é um combobox.
Sinceramente ainda não encontrei o erro.
Gostei + 0
28/11/2012
Claudia Nogueira
Se marcou desmarca e tenta compilar.
Só pra fazer um teste.
Gostei + 0
28/11/2012
Flavio Silva
Gostei + 0
28/11/2012
Claudia Nogueira
Gostei + 0
28/11/2012
Flavio Silva
Gostei + 0
28/11/2012
Claudia Nogueira
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
28/11/2012
Deivison Melo
Gostei + 0
29/11/2012
Flavio Silva
Gostei + 0
29/11/2012
Rodolpho Silva
Poste a solução, por favor, somente para documentar...
Gostei + 0
29/11/2012
Flavio Silva
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
Clique aqui para fazer login e interagir na Comunidade :)