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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar