Erro quot;Unable to execute Queryquot; no TSQLQuery do DBE

Delphi

13/09/2005

Caros colegas, estou com um certo probleminha e gostaria que alguém me ajudasse, pelo menos dizendo o porque do erro.

Quando eu dou um Open numa TSQLQuery(DBExpress), ela dá o seguinte erro: ´Unable to execute Query´

Aqui está o código:
  with qrSQL do
  begin
    Close;
    SQL.Clear;
    SQL.Add(´Select IDHOSPEDAGEM as ID, TIPO From hospedagens´);
    SQL.Add(´Where IDACOMODACAO = :id1´);
    SQL.Add(´  And ((DT_ENTRADA >= :dtini1 and DT_ENTRADA < :dtfim1)´);
    SQL.Add(´   Or  (DT_SAIDA > :dtini2 and DT_SAIDA <= :dtfim2)´);
    SQL.Add(´   Or  (DT_ENTRADA < :dtini3 and DT_SAIDA > :dtfim3))´);
(mIDRESERV_HOSP));
    SQL.Add(´UNION´);
    SQL.Add(´Select IDRESERVA as ID, TIPO From reservas´);
    SQL.Add(´Where IDACOMODACAO = :id2´);
    SQL.Add(´  And ((DT_ENTRADA >= :dtini4 and DT_ENTRADA < :dtfim4)´);
    SQL.Add(´   Or  (DT_SAIDA > :dtini5 and DT_SAIDA <= :dtfim5)´);
    SQL.Add(´   Or  (DT_ENTRADA < :dtini6 and DT_SAIDA > :dtfim6))´);

    Params[0].AsInteger := Integer(cbAcomodacao.KeyValue);
    Params[1].AsSQLTimeStamp := StrToSQLTimeStamp(edDtEnt.Text);
    Params[2].AsSQLTimeStamp := StrToSQLTimeStamp(edDtSaida.Text);
    Params[3].AsSQLTimeStamp := StrToSQLTimeStamp(edDtEnt.Text);
    Params[4].AsSQLTimeStamp := StrToSQLTimeStamp(edDtSaida.Text);
    Params[5].AsSQLTimeStamp := StrToSQLTimeStamp(edDtEnt.Text);
    Params[6].AsSQLTimeStamp := StrToSQLTimeStamp(edDtSaida.Text);
    Params[7].AsInteger := Integer(cbAcomodacao.KeyValue);
    Params[8].AsSQLTimeStamp := StrToSQLTimeStamp(edDtEnt.Text);
    Params[9].AsSQLTimeStamp := StrToSQLTimeStamp(edDtSaida.Text);
    Params[10].AsSQLTimeStamp := StrToSQLTimeStamp(edDtEnt.Text);
    Params[11].AsSQLTimeStamp := StrToSQLTimeStamp(edDtSaida.Text);
    Params[12].AsSQLTimeStamp := StrToSQLTimeStamp(edDtEnt.Text);
    Params[13].AsSQLTimeStamp := StrToSQLTimeStamp(edDtSaida.Text);
    Open;
    // Resto do código...
  end;


Desde já agradeço pela atenção.


Rogick

Rogick

Curtidas 0

Respostas

Rogick

Rogick

13/09/2005

O título era p/ ser [b:c86084c682]Erro ´Unable to execute Query´ no TSQLQuery do DBExpress. [/b:c86084c682]

É ki fartô ispasso! :lol:


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

13/09/2005

with qrSQL, qrSQL.SQL do
begin
  Close;
  Clear;
  Add(´Select IDHOSPEDAGEM as ID, TIPO From hospedagens´);
  Add(´Where IDACOMODACAO = :id´);
  Add(´  And ( ((DT_ENTRADA >= :dtini and DT_ENTRADA < :dtfim) Or ´);
  Add(´         (DT_SAIDA > :dtini and DT_SAIDA <= :dtfim)) ´);
  Add(´     Or (DT_ENTRADA < :dtini and DT_SAIDA > :dtfim) )´);
  Add(´UNION ALL´);
  Add(´Select IDRESERVA as ID, TIPO From reservas´);
  Add(´Where IDACOMODACAO = :id´);
  Add(´  And ( ((DT_ENTRADA >= :dtini and DT_ENTRADA < :dtfim) or ´);
  Add(´         (DT_SAIDA > :dtini and DT_SAIDA <= :dtfim)) ´);
  Add(´     Or (DT_ENTRADA < :dtini and DT_SAIDA > :dtfim) )´);
  ParamByName(´id´).AsInteger := Integer(cbAcomodacao.KeyValue);
  ParamByName(´dtini´).AsSQLTimeStamp := StrToSQLTimeStamp(edDtEnt.Text);
  ParamByName(´dtfim´).AsSQLTimeStamp := StrToSQLTimeStamp(edDtSaida.Text);
  Open;
  // Resto do código...
end;



mas vc poderia explicar exatamente o que você quer com esse código?
eu achei a condição de busca meio confusa...


GOSTEI 0
Rogick

Rogick

13/09/2005

A condição de busca serve para verificar se existe algum regsitro dentro de uma faixa de duas datas.

Ah, esqueci! Muito obrigado pela limpeza do meu código, Emerson.

Eu queria saber mesmo é o que causa este erro.


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

13/09/2005

não funcionou da forma que eu te passei?


GOSTEI 0
Rogick

Rogick

13/09/2005

Fiz o q vc falou, mas ainda tá dando erro. Vc por acaso sabe a causa deste erro?


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

13/09/2005

with qrSQL, qrSQL.SQL do 
begin 
  Close; 
  Clear; 
  Add(´Select IDHOSPEDAGEM as ID, TIPO From hospedagens´); 
  Add(´Where IDACOMODACAO = :id´); 
  Add(´  And ( ((DT_ENTRADA >= :dtini and DT_ENTRADA < :dtfim) Or ´); 
  Add(´         (DT_SAIDA > :dtini and DT_SAIDA <= :dtfim)) ´); 
  Add(´     Or (DT_ENTRADA < :dtini and DT_SAIDA > :dtfim) )´); 
  Add(´UNION ALL´); 
  Add(´Select IDRESERVA as ID, TIPO From reservas´); 
  Add(´Where IDACOMODACAO = :id´); 
  Add(´  And ( ((DT_ENTRADA >= :dtini and DT_ENTRADA < :dtfim) or ´); 
  Add(´         (DT_SAIDA > :dtini and DT_SAIDA <= :dtfim)) ´); 
  Add(´     Or (DT_ENTRADA < :dtini and DT_SAIDA > :dtfim) )´); 
  ParamByName(´id´).AsInteger := Integer(cbAcomodacao.KeyValue); 
  ParamByName(´dtini´).AsSQLTimeStamp := StrToSQLTimeStamp(edDtEnt.Text); 
  ParamByName(´dtfim´).AsSQLTimeStamp := StrToSQLTimeStamp(edDtSaida.Text); 
  Open; 
  // Resto do código... 
end;


não sei exatamente onde pode estar o erro. talvez, que de alguma forma, as condições de busca possam estar ´colidindo´.

seria possível você passar essas duas tabelas? mande o DDL e o DML de inserção dos registros dessas tabelas para que possamos fazer alguns testes com as instruções.


GOSTEI 0
Rogick

Rogick

13/09/2005

Infelizmente não posso passar essas tabelas nem o DDL e DML(regras da empresa)

Mas, eu testei com BDE e com o ADO e não tive problemas com estas queries. Será que DBExpress usa um padrão SQL diferente dos demais? Ou é ´frescura´ do componente?


Eu tô tendo tb outros erros c/ o DBExpress, só q c/ transação.
Eles estão postados no tópico [u:60202efacd]Erros de transação no DBExpress[/u:60202efacd].
Se puder me ajudar agradeço. :D

Agradeço novamente pela atenção.

[b:60202efacd][i:60202efacd]NOTA:[/i:60202efacd][/b:60202efacd] [i:60202efacd]Se alguém também quiser comentar pode ficar livre p/ isso. Nesse tópico cabe + gente 8) [/i:60202efacd]


GOSTEI 0
POSTAR