erro em dbgrid

08/03/2006

0

pessoal uso uma tela de pesquisa para todos os meus formularios de cadastro e agora estou com um probleminha nesse trecho do codigo
dbgpesquisar.Columns[0].FieldName:=DM_Pocao.qryConsulta.Fields[0].DisplayName;
dbgpesquisar.Columns[1].FieldName:=DM_Pocao.qryConsulta.Fields[1].DisplayName;


ele me dá o seguinte erro quando executo o programa passo a passo

´dbgpesquisar.columns[0].fieldname = variable ´self´ inaccessible here due to optimization´

e com isso os dados encontrados não aparecem para uma leitura mas quando fecho o formulario o campo encontrado (e que fica invisivel) é passado normalmente para o formulario que o chamou para a alteração de seus dados oque é o principio da pesquisa.


Mhdragon-rs

Mhdragon-rs

Responder

Posts

08/03/2006

Pestana

amigão eu não entendi direito, mas voce ligou o datasource a query atraves da propriedade DataSet do DataSource?

aguardo.


Responder

10/03/2006

Mhdragon-rs

galera este é meu codigo no formulario pesquisar:
const
    scidcodigo = ´ where cid_codigo like :codigo´;
    scidnome =´ where cid_nome like :nome´;

    sclicodigo = ´  where cli_codigo like :codigo´;
    sclinome = ´  where cli_nome like :nome´;


procedure Tfrm_pesquisar.btnpesquisarClick(Sender: TObject);
var
  snome:string;
  scodigo:integer;
begin
  case sformulario of
    0:begin//pesquisa cidade
       if ExisteInt(trim(edtpesquisar.Text))= true then
        begin
          swhere:=´´;
          sconclui:=´codigo´;
          swhere:=scidcodigo;
          sparametro:=scidcodigo;
          end
      else
          begin
          swhere:=´´;
          swhere:=scidnome;
          sparametro:=scidcodigo;
          end;
      end;
//pesquisa cliente
    1:begin
       if ExisteInt(trim(edtpesquisar.Text))= true then
         begin
          swhere:=´´;
          sconclui:=´codigo´;
          swhere:=sclicodigo;
          sparametro:=sclicodigo;
         end
       else
          begin
          swhere:=´´;
          swhere:=sclinome;
          sparametro:=sclicodigo;
          end;
       end;


if DM_Pocao.TRSPocao.InTransaction then
    begin
      DM_Pocao.TRSPocao.Rollback;
    end;
  if sconclui = ´codigo´ then
      begin
        scodigo:=StrToInt(edtpesquisar.Text);
        DM_Pocao.TRSPocao.StartTransaction;
        DM_Pocao.qryConsulta.Active:=false;
        DM_Pocao.qryConsulta.SQL.Clear;
        DM_Pocao.qryConsulta.SQL.Add(sseleciona);
        DM_Pocao.qryConsulta.SQL.Add(swhere);
        DM_Pocao.qryConsulta.ParamByName(´codigo´).AsInteger:=scodigo;
        DM_Pocao.qryConsulta.Active:=true;
        if DM_Pocao.qryConsulta.RecordCount <= 0 then
          begin
             DM_Pocao.TRSPocao.Rollback;
             Informacao(´Não encontrou dados referentes...´,´Aviso...´);
             edtpesquisar.Clear;
             edtpesquisar.SetFocus;
             Exit;
           end;
         dbgpesquisar.Columns[0].FieldName:=DM_Pocao.qryConsulta.Fields[0].DisplayName;
         dbgpesquisar.Columns[1].FieldName:=DM_Pocao.qryConsulta.Fields[1].DisplayName;
      end
  else
      begin
        snome:=trim(edtpesquisar.Text)+ ´¬´;
        DM_Pocao.TRSPocao.StartTransaction;
        DM_Pocao.qryConsulta.Active:=false;
        DM_Pocao.qryConsulta.SQL.Clear;
        DM_Pocao.qryConsulta.SQL.Add(sseleciona);
        DM_Pocao.qryConsulta.SQL.Add(swhere );
        DM_Pocao.qryConsulta.ParamByName(´nome´).AsString:=snome;
        DM_Pocao.qryConsulta.Active:=true;
        if DM_Pocao.qryConsulta.RecordCount <= 0 then
          begin
            DM_Pocao.TRSPocao.Rollback;
            informacao(´Não encontrou dados referentes...´,´Aviso...´);
            edtpesquisar.Clear;
            edtpesquisar.SetFocus;
            Exit;
          end;
        dbgpesquisar.Columns[0].FieldName:=DM_Pocao.qryConsulta.Fields[0].DisplayName;
        dbgpesquisar.Columns[1].FieldName:=DM_Pocao.qryConsulta.Fields[1].DisplayName;

        end;

end;



procedure Tfrm_pesquisar.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
    if DM_Pocao.qryConsulta.RecordCount >= 1 then
    begin
      DM_Pocao.qryGeral.Active:=false;
      DM_Pocao.qryGeral.SQL.Clear;
      DM_Pocao.qryGeral.SQL.Add(sseleciona);
      DM_Pocao.qryGeral.SQL.Add(sparametro);
      DM_Pocao.qryGeral.ParamByName(´codigo´).AsInteger:=DM_Pocao.qryConsulta.Fields[0].AsInteger;
      DM_Pocao.qryGeral.Active:=true;
      if DM_Pocao.qryGeral.RecordCount < 1 then
      begin
          DM_Pocao.TRSPocao.Rollback;
          informacao(´Nã há registros selecionados´,´Aviso´);
       end;
    end;
end;


bom com esse código eu desliguei todo o banco de dados do programa e com isso acredito eu que melhorei a segurança das tabelas ñ tendo elas ligadas direto ao form e assim com isso tb futuramente incluido no banco de dados quero diminuir o trafego de rede.

o problema consiste em que depois de fazer a pesquisa o resultado ñ aparece no dbgrid.

dando aquele erro descrito anteriomente.

agradeço se alguem puder me ajudar...


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar