Fórum Erro quot;Unable to execute Queryquot; no TSQLQuery do DBE #295326
13/09/2005
0
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
Curtir tópico
+ 0Posts
13/09/2005
Rogick
É ki fartô ispasso! :lol:
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...
Gostei + 0
13/09/2005
Rogick
Ah, esqueci! Muito obrigado pela limpeza do meu código, Emerson.
Eu queria saber mesmo é o que causa este erro.
Gostei + 0
13/09/2005
Emerson Nascimento
Gostei + 0
14/09/2005
Rogick
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.
Gostei + 0
14/09/2005
Rogick
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
Clique aqui para fazer login e interagir na Comunidade :)