Consulta IBQuery
Olá pessoal,
estou desenvolvendo um projeto em delphi e preciso fazer algumas consultas, uso o Interbase como banco de dados, a minha intenção de consulta é a seguinte:
Tenho um form de cadastro ex:(Frm_cadcli)//clientes, neste mesmo form tem um botão para fazer pesquisa que abre outro form ex:(frm_conclie)//consulta clientes, neste form (frm_concli) tenho um dbgrid e um edit e um radiogroup, para escolher o tipo de consulta que gostaria de fazer ex:(cliente, cidade, contato), escolhido o tipo de consulta começo a digitar e em tempo real vai me mostrando no dbgrid tudo que estiver cadastrado com a letra que estou digitando no edit, até aqui perfeito eu consigo fazer, mas assim que eu achar meu cliente eu preciso editar ele, como para fazer esta consulta uso um IBQuery ligado ao dbgrid não consigo que o cliente encontrado fique aparecendo na form de cadastro (frm_cadcli), já tentei várias maneiras, abaixo os códigos que uso atualmente para fazer consulta em orçamentos:
procedure Filtro_Con_Sod;
var
filtro1:string;
filtro2:string;
begin
with Con_geral do
begin
if RadioButton1.Checked = true then
filtro1:=´CLIENTE´;
if RadioButton2.Checked = true then
filtro1:=´SODN´;
if RadioButton3.Checked = true then
filtro1:=´PRODUTO´;
if RadioButton4.Checked = true then
filtro2:=´CLIENTE´;
if RadioButton5.Checked = true then
filtro2:=´SODN´;
if RadioButton6.Checked = true then
filtro2:=´PRODUTO´;
if (edconsulta.Text <> ´´) and (edcliente.Text <> ´´) then
begin
DBGrid1.DataSource:= dm1.DSProcSod;
dm1.IBQRProcSod.Active:=false;
dm1.IBQRProcSod.SQL.Clear;
dm1.IBQRProcSod.SQL.Add(´select SODN, SODREV, CLIENTE, PRODUTO, ONDEESTA from FRSOD where upper(´+ filtro1 +´)like:PRCLI and upper(´+ filtro2 +´)like:PRARQ´);
dm1.IBQRProcSod.Params[0].AsString:=´¬´ + Con_geral.edconsulta.Text + ´¬´;
dm1.IBQRProcSod.Params[1].AsString:=´¬´ + Con_geral.edcliente.Text + ´¬´;
dm1.IBQRProcSod.Active:=true;
end;
if edconsulta.Text <> ´´ then
begin
dBGrid1.DataSource:= dm1.DSProcSod;
dm1.IBQRProcSod.Active:=false;
dm1.IBQRProcSod.SQL.Clear;
dm1.IBQRProcSod.SQL.Add(´Select SODN, SODREV, CLIENTE, PRODUTO, ONDEESTA from FRSOD where upper(´+ filtro1 +´)like:PRCLI´);
dm1.IBQRProcSod.Params[0].AsString:=´¬´ + Con_geral.edconsulta.Text + ´¬´;
dm1.IBQRProcSod.Active:=true;
end;
if edcliente.Text <> ´´ then
begin
DBGrid1.DataSource:= dm1.DSProcSod;
dm1.IBQRProcSod.Active:=false;
dm1.IBQRProcSod.SQL.Clear;
dm1.IBQRProcSod.SQL.Add(´Select SODN, SODREV, CLIENTE, PRODUTO, ONDEESTA from FRSOD where upper(´+ filtro2 +´)like:PRCLI´);
dm1.IBQRProcSod.Params[0].AsString:=´¬´ + Con_geral.edcliente.Text + ´¬´;
dm1.IBQRProcSod.Active:=true;
end;
end;
end;
Obrigado a todos!
estou desenvolvendo um projeto em delphi e preciso fazer algumas consultas, uso o Interbase como banco de dados, a minha intenção de consulta é a seguinte:
Tenho um form de cadastro ex:(Frm_cadcli)//clientes, neste mesmo form tem um botão para fazer pesquisa que abre outro form ex:(frm_conclie)//consulta clientes, neste form (frm_concli) tenho um dbgrid e um edit e um radiogroup, para escolher o tipo de consulta que gostaria de fazer ex:(cliente, cidade, contato), escolhido o tipo de consulta começo a digitar e em tempo real vai me mostrando no dbgrid tudo que estiver cadastrado com a letra que estou digitando no edit, até aqui perfeito eu consigo fazer, mas assim que eu achar meu cliente eu preciso editar ele, como para fazer esta consulta uso um IBQuery ligado ao dbgrid não consigo que o cliente encontrado fique aparecendo na form de cadastro (frm_cadcli), já tentei várias maneiras, abaixo os códigos que uso atualmente para fazer consulta em orçamentos:
procedure Filtro_Con_Sod;
var
filtro1:string;
filtro2:string;
begin
with Con_geral do
begin
if RadioButton1.Checked = true then
filtro1:=´CLIENTE´;
if RadioButton2.Checked = true then
filtro1:=´SODN´;
if RadioButton3.Checked = true then
filtro1:=´PRODUTO´;
if RadioButton4.Checked = true then
filtro2:=´CLIENTE´;
if RadioButton5.Checked = true then
filtro2:=´SODN´;
if RadioButton6.Checked = true then
filtro2:=´PRODUTO´;
if (edconsulta.Text <> ´´) and (edcliente.Text <> ´´) then
begin
DBGrid1.DataSource:= dm1.DSProcSod;
dm1.IBQRProcSod.Active:=false;
dm1.IBQRProcSod.SQL.Clear;
dm1.IBQRProcSod.SQL.Add(´select SODN, SODREV, CLIENTE, PRODUTO, ONDEESTA from FRSOD where upper(´+ filtro1 +´)like:PRCLI and upper(´+ filtro2 +´)like:PRARQ´);
dm1.IBQRProcSod.Params[0].AsString:=´¬´ + Con_geral.edconsulta.Text + ´¬´;
dm1.IBQRProcSod.Params[1].AsString:=´¬´ + Con_geral.edcliente.Text + ´¬´;
dm1.IBQRProcSod.Active:=true;
end;
if edconsulta.Text <> ´´ then
begin
dBGrid1.DataSource:= dm1.DSProcSod;
dm1.IBQRProcSod.Active:=false;
dm1.IBQRProcSod.SQL.Clear;
dm1.IBQRProcSod.SQL.Add(´Select SODN, SODREV, CLIENTE, PRODUTO, ONDEESTA from FRSOD where upper(´+ filtro1 +´)like:PRCLI´);
dm1.IBQRProcSod.Params[0].AsString:=´¬´ + Con_geral.edconsulta.Text + ´¬´;
dm1.IBQRProcSod.Active:=true;
end;
if edcliente.Text <> ´´ then
begin
DBGrid1.DataSource:= dm1.DSProcSod;
dm1.IBQRProcSod.Active:=false;
dm1.IBQRProcSod.SQL.Clear;
dm1.IBQRProcSod.SQL.Add(´Select SODN, SODREV, CLIENTE, PRODUTO, ONDEESTA from FRSOD where upper(´+ filtro2 +´)like:PRCLI´);
dm1.IBQRProcSod.Params[0].AsString:=´¬´ + Con_geral.edcliente.Text + ´¬´;
dm1.IBQRProcSod.Active:=true;
end;
end;
end;
Obrigado a todos!
Celsoctorres
Curtidas 0
Respostas
Dr. Interbase
24/11/2003
Celso
Se Você está usando dbedits no form de cadastro, utilize o datasource deles o mesmo do grid desta forma quando você sair do dbgrid, o registro será mostrado no form de cadastro
Sds
Se Você está usando dbedits no form de cadastro, utilize o datasource deles o mesmo do grid desta forma quando você sair do dbgrid, o registro será mostrado no form de cadastro
Sds
GOSTEI 0
Celsoctorres
24/11/2003
Dr. Interbase,
bom, como disse eu já tinha feito antes em tempo de execução, mudo a propriedade datasource dos dbedits para a IBQuery e em tempo real consigo ver eles, porém se eu precisar editar um valor não vou conseguir pois estes devem estar ligados com o datasource da ibtable.
bom, como disse eu já tinha feito antes em tempo de execução, mudo a propriedade datasource dos dbedits para a IBQuery e em tempo real consigo ver eles, porém se eu precisar editar um valor não vou conseguir pois estes devem estar ligados com o datasource da ibtable.
GOSTEI 0
Celsoctorres
24/11/2003
Alguém sabe?
GOSTEI 0