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
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.
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
Curtir tópico
+ 0
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.
aguardo.
Responder
10/03/2006
Mhdragon-rs
galera este é meu codigo no formulario pesquisar:
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...
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
Clique aqui para fazer login e interagir na Comunidade :)