Erro no Select
Bom dia a todos,
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.
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
Curtidas 0
Respostas
Maikel
15/04/2009
Bom, a mensagem de erro quer dizer que vc está com problemas quanto a sintaxe do seu código SQL, onde provavelmente o erro está no uso das aspas pelo Delphi.
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:
Att
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
Uelinton_reis
15/04/2009
Então amigo, fiz um teste e quando não utilizo um select dentro de outro select ele não da o erro: Exemplo utilizado que não da o erro esta abaixo:
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
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
Maikel
15/04/2009
Faça o post da rotina que vc está usando no Delphi para jogar a SQL... é através de algum componente ou está adicionando a SQL direto no código?
Faça o post de todo o código que ficará mais fácil de lhe ajudar.
Att
Faça o post de todo o código que ficará mais fácil de lhe ajudar.
Att
GOSTEI 0
Uelinton_reis
15/04/2009
Faça o post da rotina que vc está usando no Delphi para jogar a SQL... é através de algum componente ou está adicionando a SQL direto no código?
Faça o post de todo o código que ficará mais fácil de lhe ajudar.
Att
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