Fórum Erro na SQL - Invalid Use of keyword #208629
22/01/2004
Boa noite, estou tendo problemas em lançar uma string (contendo código SLQ) em um componente TQuery, mas está retornando o seguinte erro:
[b:304ea81254]Invalid Use of keyword. Token Select line number 2´[/b:304ea81254], mas eu já testei essa SQL no BDE e me traz o resultado desejado.
Estou usando Delphi 7 com Paradox, e componentes da palheta BDE.
[b:304ea81254]Título editado pelo Moderador (AZ) - Removido: ´URGENTE´[/b:304ea81254]
Posts
Colega,
Coloca o fragmento do código pra gente analisar.
[quote:8b01ec39c5=´Aroldo Zanela´]Colega,
Coloca o fragmento do código pra gente analisar.[/quote:8b01ec39c5]
Aqui vai o código de onde estou montando a SQL
var
SQL : String;
Mes : integer;
begin
Frm_RelCli.Qry_Clientes.Close;
Mes := 0;
SQL :=´ ´;
Frm_RelCli.Qry_Clientes.SQL.Clear;
case RdGrp_Tempo.ItemIndex of
0 : begin
SQL := ´select * from clientes´;
Frm_RelCli.Qry_Clientes.SQL.Add(SQL);
end;
1 : begin
Mes := SpinEdit1.Value;
SQL := ´select * from clientes´;
Sql := Sql + ´´´ where extract (month from dt_cadastro) = ´+IntToStr(Mes);
Frm_RelCli.Qry_Clientes.SQL.Add(SQL);
end;
end;
case RdGrp_Ordena.ItemIndex of
0 : begin
SQL := SQL + ´ order by placa´;
Frm_RelCli.Qry_Clientes.SQL.Add(SQL);
end;
1 : begin
SQL := SQL + ´ order by nome´;
Frm_RelCli.Qry_Clientes.SQL.Add(SQL);
end;
2 : begin
SQL := SQL + ´ order my dt_cadastro´;
Frm_RelCli.Qry_Clientes.SQL.Add(SQL);
end;
3 : begin
SQL := SQL + ´ order by dt_nascimento´;
Frm_RelCli.Qry_Clientes.SQL.Add(SQL);
end;
end;
case RdGrp_Local.ItemIndex of
0 : begin
Frm_RelCli.Qry_Clientes.SQL.Add(SQL);
// Frm_RelCli.Qry_Clientes.Open;
showmessage(sql);
Frm_RelCli.QuickRep1.Preview;
Frm_RelCli.Qry_Clientes.Close;
end;
1 : begin
Frm_RelCli.Qry_Clientes.SQL.Add(SQL);
Frm_RelCli.Qry_Clientes.Open;
Frm_RelCli.QuickRep1.Print;
Frm_RelCli.Qry_Clientes.Close;
end;
end;
Close;
Colega,
Corrija esta linha:
Sql := Sql + ´ where extract (month from dt_cadastro) = ´+IntToStr(Mes);
eu corrigi, mas continua dando erro
procedure TFrm_CriaRelCli.BitBtn1Click(Sender: TObject);
var
SQL : String;
Mes : integer;
begin
Frm_RelCli.Qry_Clientes.Close;
Mes := 0;
SQL :=´ ´;
Frm_RelCli.Qry_Clientes.SQL.Clear;
case RdGrp_Tempo.ItemIndex of
0 : begin
SQL := ´select * from clientes´;
Frm_RelCli.Qry_Clientes.SQL.Add(SQL);
end;
1 : begin
Mes := SpinEdit1.Value;
SQL := ´select * from clientes´;
Sql := Sql + ´ where extract (month from dt_cadastro) = ´+IntToStr(Mes);
Frm_RelCli.Qry_Clientes.SQL.Add(SQL);
end;
end;
case RdGrp_Ordena.ItemIndex of
0 : begin
SQL := SQL + ´ order by placa´;
Frm_RelCli.Qry_Clientes.SQL.Add(SQL);
end;
1 : begin
SQL := SQL + ´ order by nome´;
Frm_RelCli.Qry_Clientes.SQL.Add(SQL);
end;
2 : begin
SQL := SQL + ´ order my dt_cadastro´;
Frm_RelCli.Qry_Clientes.SQL.Add(SQL);
end;
3 : begin
SQL := SQL + ´ order by dt_nascimento´;
Frm_RelCli.Qry_Clientes.SQL.Add(SQL);
end;
end;
case RdGrp_Local.ItemIndex of
0 : begin
Frm_RelCli.Qry_Clientes.SQL.Add(SQL);
Frm_RelCli.Qry_Clientes.Open; //aki está dando o erro
//showmessage(sql);
Frm_RelCli.QuickRep1.Preview;
Frm_RelCli.Qry_Clientes.Close;
end;
1 : begin
Frm_RelCli.Qry_Clientes.SQL.Add(SQL);
Frm_RelCli.Qry_Clientes.Open;
Frm_RelCli.QuickRep1.Print;
Frm_RelCli.Qry_Clientes.Close;
end;
end;
Close;
end;
esse é o código corrigido, está dando erro na hora em que vou abrir a query, se você puder me ajudar, fico muito grato
Colega,
Aqui também está com erro: SQL := SQL + ´ order my dt_cadastro´; (troque por By).
Me diz qual as opções que está selecionando.
[quote:c69989d034=´Aroldo Zanela´]Colega,
Aqui também está com erro: SQL := SQL + ´ order my dt_cadastro´; (troque por By).
Me diz qual as opções que está selecionando.[/quote:c69989d034]
estou selecionando a sequencia 0, 1, 1, ou seja ], com periodo (1 - Jan),
Nome, e tela, mas já tentei outras opçoes tbm
Colega,
Faça a seguinte alteração:
Frm_RelCli.Qry_Clientes.SQL.Add(SQL);
//Frm_RelCli.Qry_Clientes.Open; //aki está dando o erro
Frm_RelCli.Qry_Clientes.SQL.SaveToFile(´arquivo.sql´);
Coloque o conteúdo aqui pra gente analisar melhor.
esse foi o resultado
select * from clientes where extract (month from dt_cadastro) = 1
select * from clientes where extract (month from dt_cadastro) = 1 order by nome
select * from clientes where extract (month from dt_cadastro) = 1 order by nome
Tá certo, então quer dizer que a TQuery está recebendo essas 3 linhas, então para sanar esse problema devo colocar esse código [b:db7383346b](Form.Query.SQL.Add(SQL))[/b:db7383346b], antes de dar Preview no Report, é isso? E apagar os demais, cerot?