Como fazer consultas sem usar SQL no delphi?

Delphi

16/05/2016

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

Joelson

Curtidas 1

Melhor post

Mais Respostas

Joelson

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

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;
GOSTEI 0
William

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

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;
GOSTEI 0
William

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):
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

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;
GOSTEI 0
Joelson

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;
GOSTEI 0
Natanael Ferreira

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

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

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;
GOSTEI 0
Natanael Ferreira

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
GOSTEI 1
Joelson

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;
GOSTEI 0
POSTAR