Fórum Erro no Select #369790
15/04/2009
0
Estou com dificuldades no select através do Delphi 7, será que alguem poderia me ajudar?
Estou utilizando o Delphi 7 com firebird 2.0 e IBExpert Personal Edition.
Quando executo o select abaixo pelo Delphi 7 ele da um erro, mas quando utilizo o mesmo no IBExpert é perfeito. O que pode estar acontecendo?
SELECT * FROM (select * from orc
Where ( ´2´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10))
or ( ´1´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10))
or ( ´1´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10))
or ( ´1´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10))
or ( ´1´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10)))
as uel
Where TIPO_SIST = ´TIPO_INST´
A janela de Erro mostra a seguinte mensagem:
Nome da Janela: Debugger Exception Notification
Mensagem: Project SGKB.exe raised exception class EIBInterBaseError with message ´Dynamic SQL Error SQL error code = -104 Token unknown - line 1, char 16 Select´. Process stopped. Use Step or Run to continue.
Se alguem puder me ajudar, agradeço.
Uelinton_reis
Curtir tópico
+ 0Posts
16/04/2009
Maikel
Tente fazer o seguinte, ao passar a SQL para o Delphi, em todo lugar onde aparece uma aspa simples, adicione mais uma, onde vai ficar duas aspas uma ao lado da outra... assim:
SELECT * FROM (select * from orc Where ( ´´2´´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10)) or ( ´´1´´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10)) or ( ´´1´´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10)) or ( ´´1´´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10)) or ( ´´1´´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10))) as uel Where TIPO_SIST = ´´TIPO_INST´´
Att
Gostei + 0
16/04/2009
Uelinton_reis
SELECT * FROM orc
Where ( ´31´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10))
or ( ´14´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10))
or ( ´´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10))
or ( ´´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10))
or ( ´´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10))
Mas quando utilizo o IBExpert para rodar o script com o select dentro do select funciona é apenas jogar no delphi que da o erro.
-------------------------------------------------
Outra questão se vc puder me ajudar.
Neste mesmo script eu gostaria que o select fosse acumulativo tipo:
SELECT * FROM orc
Where ( ´31´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10))
[b:77e716350b]and[/b:77e716350b] ( ´14´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10))
[b:77e716350b]and[/b:77e716350b] ( ´´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10))
[b:77e716350b]and[/b:77e716350b] ( ´´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10))
[b:77e716350b]and[/b:77e716350b] ( ´´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10))
No lugar do [b:77e716350b]OR[/b:77e716350b] utilizar [b:77e716350b]AND[/b:77e716350b], mas não funciona, porque? Qual outra opção posso utilizar para ser acumulativo.
Obrigado.
Uelinton
Gostei + 0
16/04/2009
Maikel
Faça o post de todo o código que ficará mais fácil de lhe ajudar.
Att
Gostei + 0
16/04/2009
Uelinton_reis
Boa tarde.
if (PesqSistemas.RadioGroup1.ItemIndex = 0) then
begin
statusbar1.Panels[2].Text:= ´ Tipo Sistema: Instalação´;
strSql:= ´select * from ´ + nomeTabela;
strSql:= strSql + ´ where ( ´ + #39 + PesqSistemas.IBQOpcao1.FieldByName(´id´).AsString + 39 + ´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10))´;
strSql:= strSql + ´ or ( ´ + 39 + PesqSistemas.IBQOpcao2.FieldByName(´id´).AsString + 39 + ´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10))´;
strSql:= strSql + ´ or ( ´ + 39 + PesqSistemas.IBQOpcao3.FieldByName(´id´).AsString + 39 + ´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10))´;
strSql:= strSql + ´ or ( ´ + #39 + PesqSistemas.IBQOpcao4.FieldByName(´id´).AsString + 39 + ´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10))´;
strSql:= strSql + ´ or ( ´ + 39 + PesqSistemas.IBQOpcao5.FieldByName(´id´).AsString + 39 + ´ in (sist1, sist2, sist3, sist4, sist5, sist6, sist7, sist8, sist9, sist10))) as Orcamentos ´;
strSql:= strSql + ´ Where TIPO_SIST = ´ + 39 + ´TIPO_INST´ + 39;
end;
Tomara que ajude.
Obrigado.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)