Ajuda com código fonte

25/06/2003

0

Bom Dia

Pessoal tenho uma tela com três edits, uma de publicação, outra de estado e uma outra de municipio, desejo listar os assinantes que tenho em um banco de dados que assinem uma publicação e/ou morem em um determinado estado e/ou morem em um determinado município, a consulta feita individualmente (só com um campo preenchido) retorna valores corretos, mas se preencho mais de um campo (mesmo tendo certeza que há valores válidos para aquela pesquisa) recebo menssagem de erro, alguém teria a paciência de dar uma olhada nesse código e dizer-me onde está esse maldito erro?

unit UTELACONSULTA;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, StdCtrls, Buttons, Grids, DBGrids, Provider, SqlExpr,
DBXpress, DBClient, DBLocal, DBLocalS;

type
TFRMTELAPESQUISA = class(TForm)
LBLESTADO: TLabel;
EDTESTADO: TEdit;
LBLMUNICIPIO: TLabel;
EDTMUNICIPIO: TEdit;
LBLPUBLICACAO: TLabel;
EDTPUBLICACAO: TEdit;
DSCONSULTA: TDataSource;
DBGrid1: TDBGrid;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure BitBtn2Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
FRMTELAPESQUISA: TFRMTELAPESQUISA;
original: string;

implementation

uses UDMREL, FREXEMPLORELATORIO, SeicUtil;

{$R *.dfm}

procedure TFRMTELAPESQUISA.BitBtn2Click(Sender: TObject);
begin
close;
end;

procedure TFRMTELAPESQUISA.FormActivate(Sender: TObject);
begin
DSConsulta.DataSet.Active := false;
TSQLClientDataSet(DSConsulta.DataSet).CommandText := ´Select * From Assinantes A,Publicacao P, Municipio M, Assinatura S, UF U where A.id_municipio = M.id_municipio and A.id_assinante = S.id_assinante and S.id_publicacao = P.id_publicacao and A.ID_UF = U.ID_UF´;
DSConsulta.DataSet.Active := True;
original := TSQLClientDataSet(DSConsulta.DataSet).CommandText;

end;



procedure TFRMTELAPESQUISA.BitBtn1Click(Sender: TObject);
var condicao:string;
begin

DSConsulta.DataSet.Active := false;
TSQLClientDataSet(DSConsulta.DataSet).CommandText := original;
DSConsulta.DataSet.Active := True;

if (edtPublicacao.Text <> ´´) and (edtmunicipio.Text = ´´) and (edtestado.text = ´´) then
begin
condicao := ´upper(P.NM_PUBLICACAO) = ´ + CHR(39) + uppercase(edtPublicacao.Text) + CHR(39);
DSConsulta.DataSet.Close;
AddWhereClause(TSQLClientDataset(DSConsulta.Dataset), condicao);
DSConsulta.DataSet.Open;
end;

if (edtmunicipio.Text <> ´´) and (edtPublicacao.Text = ´´) and (edtestado.text = ´´) then
begin
condicao := ´M.nm_municipio = ´ + CHR(39) + edtmunicipio.Text + CHR(39);
DSConsulta.DataSet.Close;
AddWhereClause(TSQLClientDataset(DSConsulta.Dataset), condicao);
DSConsulta.DataSet.Open;
end;

if (edtestado.Text <> ´´) and (edtPublicacao.Text = ´´) and (edtmunicipio.text = ´´) then
begin
condicao := ´U.nm_uf = ´ + CHR(39) + edtestado.Text + CHR(39);
DSConsulta.DataSet.Close;
AddWhereClause(TSQLClientDataset(DSConsulta.Dataset), condicao);
DSConsulta.DataSet.Open;
end;


if (edtPublicacao.Text <> ´´) and (edtmunicipio.Text <> ´´) and (edtestado.text = ´´) then
begin
condicao := ´upper(P.NM_PUBLICACAO) = ´ + CHR(39) + uppercase(edtPublicacao.Text) + CHR(39) +´and(M.NM_MUNICIPIO) = ´ + CHR(39) + (edtmunicipio.Text) + CHR(39);
DSConsulta.DataSet.Close;
AddWhereClause(TSQLClientDataset(DSConsulta.Dataset), condicao);
DSConsulta.DataSet.Open;
end;

if (edtPublicacao.Text <> ´´) and (edtmunicipio.Text <> ´´) and (edtestado.text <> ´´) then
begin
condicao := ´upper(P.NM_PUBLICACAO) = ´ + CHR(39) + uppercase(edtPublicacao.Text) + CHR(39) +´and M.NM_MUNICIPIO = ´ + CHR(39) + (edtmunicipio.Text) + ´and U.NM_UF = ´ + CHR(39) + (edtestado.Text);
DSConsulta.DataSet.Close;
AddWhereClause(TSQLClientDataset(DSConsulta.Dataset), condicao);
DSConsulta.DataSet.Open;
end;

if (edtPublicacao.Text <> ´´) and (edtmunicipio.Text <> ´´) and (edtestado.text = ´´) then
begin
condicao := ´upper(P.NM_PUBLICACAO) = ´ + CHR(39) + uppercase(edtPublicacao.Text) + CHR(39) +´and(M.NM_MUNICIPIO) = ´ + CHR(39) + uppercase(edtmunicipio.Text);
DSConsulta.DataSet.Close;
AddWhereClause(TSQLClientDataset(DSConsulta.Dataset), condicao);
DSConsulta.DataSet.Open;
end;

if (edtPublicacao.Text <> ´´) and (edtestado.Text <> ´´) and (edtmunicipio.text = ´´) then
begin
condicao := ´upper(P.NM_PUBLICACAO) = ´ + CHR(39) + uppercase(edtPublicacao.Text) + CHR(39) +´and(U.NM_UF) = ´ + CHR(39) + uppercase(edtestado.Text);
DSConsulta.DataSet.Close;
AddWhereClause(TSQLClientDataset(DSConsulta.Dataset), condicao);
DSConsulta.DataSet.Open;
end;

if (edtmunicipio.text <> ´´) and (edtestado.Text <> ´´) and (edtpublicacao.text = ´´) then
begin
condicao := ´upper(M.NM_MUNICIPIO) = ´ + CHR(39) + uppercase(edtmunicipio.Text) + CHR(39) +´and(U.NM_UF) = ´ + CHR(39) + uppercase(edtestado.Text);
DSConsulta.DataSet.Close;
AddWhereClause(TSQLClientDataset(DSConsulta.Dataset), condicao);
DSConsulta.DataSet.Open;
end;



end;



end. :oops: :oops:


Anjo Azul

Anjo Azul

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar