Como fazer consultas sem usar SQL no delphi?
Alguém sabe se é possível fazer consultas filtrando por cliente sem usar SQL, só usando a própria linguagem delphi? Por exemplo, quero que mostre no dbgrid só as contas de um determinado cliente que eu escolho. Tem como fazer isso sem usar SQL, só usando o delphi?
Joelson
Curtidas 1
Melhor post
William
16/05/2016
Dê uma lida nesses artigos da DevMedia:
https://www.devmedia.com.br/trabalhando-a-propriedade-filter-do-clientdataset-parte-1/13571
https://www.devmedia.com.br/trabalhando-a-propriedade-filter-do-clientdataset-parte-2/13575
https://www.devmedia.com.br/trabalhando-a-propriedade-filter-do-clientdataset-parte-1/13571
https://www.devmedia.com.br/trabalhando-a-propriedade-filter-do-clientdataset-parte-2/13575
GOSTEI 1
Mais Respostas
Joelson
16/05/2016
Willian você é demais. É exatamente disso que preciso. Agora como eu faço para digitar somente o nome do cliente no edit, pra não precisar digitar esse comando todo: nome like 'Andre'.Tem como digitar só o nome do cliente no edit?
GOSTEI 0
Joelson
16/05/2016
Willian consegui resolver em parte dessa forma. Mas ainda sou obrigado a colocar as aspas. Por exemplo: 'joelson'. Tem alguma ideia pra mim não precisar colocar as aspas. Abaixo está o código de como estou fazendo.
procedure TfrmConsultaReceber.btn4Click(Sender: TObject);
var nome: string;
begin
nome:= Edit1.text;
dm_dados.tblReceber.Filtered := false;
dm_dados.tblReceber.Filter := 'reb_cliente ='+ nome;
dm_dados.tblReceber.Filtered := true;
end;
procedure TfrmConsultaReceber.btn4Click(Sender: TObject);
var nome: string;
begin
nome:= Edit1.text;
dm_dados.tblReceber.Filtered := false;
dm_dados.tblReceber.Filter := 'reb_cliente ='+ nome;
dm_dados.tblReceber.Filtered := true;
end;
GOSTEI 0
William
16/05/2016
Tente:
procedure TfrmConsultaReceber.btn4Click(Sender: TObject); var nome: string; begin nome:= Edit1.text; dm_dados.tblReceber.Filtered := false; dm_dados.tblReceber.Filter := 'reb_cliente ='+ QuotedStr(nome); dm_dados.tblReceber.Filtered := true; end;
GOSTEI 0
Joelson
16/05/2016
Willian muito obrigado pela força. Me tira mais uma dúvida. Estou tentando fazer assim, como mostra o código abaixo, mas está aparecendo essa mensagem de erro: Operator not applicable to this operand type. Você sabe por que está dando este erro?
dm_dados.tblReceber.Filtered := false;
dm_dados.tblReceber.Filter := 'reb_cliente ='+ QuotedStr(nome) and 'reb_valor_divida <> 0';
dm_dados.tblReceber.Filtered := true;
dm_dados.tblReceber.Filtered := false;
dm_dados.tblReceber.Filter := 'reb_cliente ='+ QuotedStr(nome) and 'reb_valor_divida <> 0';
dm_dados.tblReceber.Filtered := true;
GOSTEI 0
William
16/05/2016
Joelson utilize a tag CODE quando for postar trechos de código fonte, fica mais legível!
A função filter recebe como parâmetro uma string, então é necessário que sua expressão esteja dentro de apóstrofos (aspas):
A função filter recebe como parâmetro uma string, então é necessário que sua expressão esteja dentro de apóstrofos (aspas):
dm_dados.tblReceber.Filtered := false; dm_dados.tblReceber.Filter := 'reb_cliente =' + QuotedStr(nome) + ' and reb_valor_divida <> 0'; dm_dados.tblReceber.Filtered := true;
GOSTEI 0
Joelson
16/05/2016
Muito agradecido. Willian me der uma ajuda também nesse código abaixo está dando esse erro: conversion error from string ''20/05/2016''.
#código
procedure TfrmConsultaReceber.btn3Click(Sender: TObject);
var data:TDateTime;
begin
data:= Date;
dm_dados.tblReceber.Filtered := false;
dm_dados.tblReceber.Filter := 'reb_vencimento <' + QuotedStr(DateToStr(data));
dm_dados.tblReceber.Filtered := true;
end;
#código
procedure TfrmConsultaReceber.btn3Click(Sender: TObject);
var data:TDateTime;
begin
data:= Date;
dm_dados.tblReceber.Filtered := false;
dm_dados.tblReceber.Filter := 'reb_vencimento <' + QuotedStr(DateToStr(data));
dm_dados.tblReceber.Filtered := true;
end;
GOSTEI 0
Joelson
16/05/2016
Muito agradecido. Willian me der uma ajuda também nesse código abaixo está dando esse erro: conversion error from string ''20/05/2016''.
#código
procedure TfrmConsultaReceber.btn3Click(Sender: TObject);
var data:TDateTime;
begin
data:= Date;
dm_dados.tblReceber.Filtered := false;
dm_dados.tblReceber.Filter := 'reb_vencimento <' + QuotedStr(DateToStr(data));
dm_dados.tblReceber.Filtered := true;
end;
#código
procedure TfrmConsultaReceber.btn3Click(Sender: TObject);
var data:TDateTime;
begin
data:= Date;
dm_dados.tblReceber.Filtered := false;
dm_dados.tblReceber.Filter := 'reb_vencimento <' + QuotedStr(DateToStr(data));
dm_dados.tblReceber.Filtered := true;
end;
GOSTEI 0
Natanael Ferreira
16/05/2016
O problema pode ser o padrão de datas do seu BD.
procedure TfrmConsultaReceber.btn3Click(Sender: TObject);
var
data: TDateTime;
begin
data := Date;
dm_dados.tblReceber.Filtered := false;
dm_dados.tblReceber.Filter := 'reb_vencimento < ' + FormatDateTime('yyyy/mm/dd', data);
dm_dados.tblReceber.Filtered := true;
end;GOSTEI 0
Joelson
16/05/2016
Natanael coloquei seu código, mas não funcionou está aparecendo esse erro: conversion error from string ''20''.
GOSTEI 0
Joelson
16/05/2016
Até fazendo dessa forma simples está dando este erro: conversion error from string ''0''.
#Código
procedure TfrmConsultaReceber.btn3Click(Sender: TObject);
begin
dm_dados.tblReceber.Filtered := false;
dm_dados.tblReceber.Filter := 'reb_vencimento < 15/05/2016';
dm_dados.tblReceber.Filtered := true;
end;
#Código
procedure TfrmConsultaReceber.btn3Click(Sender: TObject);
begin
dm_dados.tblReceber.Filtered := false;
dm_dados.tblReceber.Filter := 'reb_vencimento < 15/05/2016';
dm_dados.tblReceber.Filtered := true;
end;
GOSTEI 0
Natanael Ferreira
16/05/2016
Qual o seu banco de dados?
Qual o tipo do seu campo reb_vencimento? Date, Datetime?
Qual o formato da data do seu campo reb_vencimento? dd/mm/yyyy? yyyy/mm/dd?
Veja este link:
https://www.devmedia.com.br/forum/filtro-por-data-erro-conversion-error-for-string-0/436991
Qual o tipo do seu campo reb_vencimento? Date, Datetime?
Qual o formato da data do seu campo reb_vencimento? dd/mm/yyyy? yyyy/mm/dd?
Veja este link:
https://www.devmedia.com.br/forum/filtro-por-data-erro-conversion-error-for-string-0/436991
GOSTEI 1
Joelson
16/05/2016
Natanael muito obrigado esse artigo que você postou o link ajudou. Funcionou assim. Segue o código abaixo. Correção do erro: conversion error from string ''0''.
#Código
procedure TfrmConsultaPagar.btn3Click(Sender: TObject);
var data: TDateTime;
begin
data:= Date;
dm_dados.tblPagar.Filtered := false;
dm_dados.tblPagar.Filter := 'reb_vencimento >' + QuotedStr(Formatdatetime('yyyy.mm.dd',data));
dm_dados.tblPagar.Filtered := true;
end;
#Código
procedure TfrmConsultaPagar.btn3Click(Sender: TObject);
var data: TDateTime;
begin
data:= Date;
dm_dados.tblPagar.Filtered := false;
dm_dados.tblPagar.Filter := 'reb_vencimento >' + QuotedStr(Formatdatetime('yyyy.mm.dd',data));
dm_dados.tblPagar.Filtered := true;
end;
GOSTEI 0