Array
(
)

erro em dbgrid

Mhdragon-rs
   - 08 mar 2006

pessoal uso uma tela de pesquisa para todos os meus formularios de cadastro e agora estou com um probleminha nesse trecho do codigo
#Código

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.


Pestana
   - 08 mar 2006

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

aguardo.


Mhdragon-rs
   - 10 mar 2006

galera este é meu codigo no formulario pesquisar:
#Código

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...