Consulta SQL retorna em branco

Delphi

22/01/2015

Olá, pessoal.

Então tenho uma consulta em 2 tabelas testei no mysql e funciona agora quando coloco no delphi xe4 ela fica em branco. Vou colocar o código abaixo.

with DM.ADOQuery_Lst_Compromissos DO
begin
Close;
SQL.Clear;
SQL.Add('SELECT A.Cod_Agenda_Geral, A.Dia, A.Mes, A.Ano, A.Titulo_Agenda_Geral, A.Tipo_Listagem_Agenda_Geral,');
SQL.Add(' B.Cod_Listage_Compromissos, B.Cod_Agenda_Geral, B.Titulo_Compromisso, B.Desc_Compromisso');
SQL.Add(' FROM agenda_geral A, listagem_compromissos B');
SQL.Add(' WHERE A.Dia=:A1 AND A.Mes=:A2 AND A.Ano=:A3');
Parameters.ParamByName('A1').Value := Dia;
Parameters.ParamByName('A2').Value := Mes;
Parameters.ParamByName('A3').Value := Ano;
Open;
end

consulta que retorna valores certinho no mysql-front:
SELECT A.Cod_Agenda_Geral, A.Dia, A.Mes, A.Ano, A.Titulo_Agenda_Geral, A.Tipo_Listagem_Agenda_Geral, B.Cod_Listage_Compromissos, B.Cod_Agenda_Geral, B.Titulo_Compromisso, B.Desc_Compromisso FROM agenda_geral A, listagem_compromissos B WHERE A.Dia = 22 AND A.Mes = 01 AND A.Ano = 2015

Por favor, onde estou errando???? Obrigado pessoal.
Fabricio Silva

Fabricio Silva

Curtidas 0

Respostas

Dannicléo Teles

Dannicléo Teles

22/01/2015

Verifique se os parâmetros estão sendo passados corretamente
GOSTEI 0
Fabricio Silva

Fabricio Silva

22/01/2015

Amigo...é justamente isso. Eu não sei o porque pois no mysql-front quando eu retiro os parâmetros e coloco valores diretos a consulta funciona perfeitamente. vou colocar abaixo como eu carreguei as variáveis Dia, Mes e Ano usadas como parâmetros. Detalhe, todas elas declaradas na procedure como string. Depois de carregá-las é que vem a minha consulta.

Dia := IntToStr(DayOf(Now));
Ano := IntToStr(YearOf(Now));
Mes := IntToStr(MonthOf(Now));
GOSTEI 0
Fabricio Silva

Fabricio Silva

22/01/2015

Pessoal estou colocando a minha procedure por favor onde está o erro. Não acho por nada. Não sei o motivo de o parâmetro não receber o valor da label.

procedure TForm_Principal.Button3Click(Sender: TObject);
var
marcador_limpar_DBGrid: integer;
Dia, Mes, Ano : String;

begin

marcador_limpar_DBGrid := 1;
Label6.Caption := IntToStr(marcador_limpar_DBGrid);
Dia := Label3.Caption;
Mes := Label4.Caption;
Ano := Label5.Caption;
// ############################################
// ############################################
with DM.ADOQuery_Lst_Compromissos DO
begin
Close;
SQL.Clear;
SQL.Add('SELECT A.Cod_Agenda_Geral, A.Dia, A.Mes, A.Ano, A.Titulo_Agenda_Geral, A.Tipo_Listagem_Agenda_Geral,');
SQL.Add(' B.Cod_Listage_Compromissos, B.Cod_Agenda_Geral, B.Titulo_Compromisso, B.Desc_Compromisso');
SQL.Add(' FROM agenda_geral A, listagem_compromissos B');
SQL.Add(' WHERE A.Dia =:A1');
SQL.Add(' AND A.Mes =:A2');
SQL.Add(' AND A.Ano =:A3 ORDER BY B.Cod_Listage_Compromissos ASC');
Parameters.ParamByName('A1').Value := Dia;
Parameters.ParamByName('A2').Value := Mes;
Parameters.ParamByName('A3').Value := Ano;
Open;

if not DM.ADOQuery_Lst_Compromissos.IsEmpty then
begin
DBGrid_Principal.DataSource := DM.DataSource_Lst_Compromissos;
DBGrid_Principal.Columns[0].FieldName := 'Cod_Listage_Compromissos';
DBGrid_Principal.Columns[1].FieldName := 'Titulo_Compromisso';
end;

end;
// ############################################
// ############################################
end;
GOSTEI 0
Fabricio Silva

Fabricio Silva

22/01/2015

Se eu trocar as variáveis Dia, Mes e Ano por valores tipo '30', '01' e '2015' funciona perfeitamente. Não estou entendendo pq a variável enm colocando o label.caption direto carrega o parâmetro.
GOSTEI 0
Renato Rubinho

Renato Rubinho

22/01/2015

Se eu trocar as variáveis Dia, Mes e Ano por valores tipo '30', '01' e '2015' funciona perfeitamente.


Pelo jeito seus campos DIA, MES e ANO são string, certo ?
Tenta informar no parâmetro que o valor que será recebido é string.

Parameters.ParamByName('A1').AsString := Dia;
Parameters.ParamByName('A2').AsString := Mes;
Parameters.ParamByName('A3').AsString := Ano;
GOSTEI 0
Fabricio Silva

Fabricio Silva

22/01/2015

Olá amigo. Bem, consegui resolver. Rrubinho...já tinha tentado isso mas ficava em branco tb. Então resolvi conferir o BD e vi que cometi um erro muito bobo. Na tabela o campo Dia recebe valore como sendo '01' e não '1' como estava sendo carregado o parâmetro pela label referente a essa variável Dia. Um erro besta que me atrasou bastante. Obrigado a atenção de todos e as tentativas de ajuda. E um alerta: Sempre prestem atenção não apenas na declaração de variável mas tb como o valor é passado pro BD pq depois isso faz uma diferença e tanto. O negócio é ganharmos tempo. Um abraço a todos e tópico encerrado pra mim.
GOSTEI 0
POSTAR