Fórum Erro quot;Unable to execute Queryquot; no TSQLQuery do DBE #295326

13/09/2005

0

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

Responder

Posts

13/09/2005

Rogick

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

É ki fartô ispasso! :lol:


Responder

Gostei + 0

13/09/2005

Emerson Nascimento

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...


Responder

Gostei + 0

13/09/2005

Rogick

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.


Responder

Gostei + 0

13/09/2005

Emerson Nascimento

não funcionou da forma que eu te passei?


Responder

Gostei + 0

14/09/2005

Rogick

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


Responder

Gostei + 0

14/09/2005

Emerson Nascimento

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.


Responder

Gostei + 0

14/09/2005

Rogick

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]


Responder

Gostei + 0

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

Aceitar