Comando sql errado!
Bom dia pessoal..gostaria de pedir ajuda de vcs para ver aonde estou errando nesse código sql..
obrigado Eric
obrigado Eric
If Letra = ´#´ then Begin parametro1 := Trim(Copy(Trim(edpalavra.text),1,Pos(´´,Trim(edpalavra.text))-1)); parametro2 := Trim(Copy(Trim(edpalavra.text),Pos(´´,Trim(edpalavra.text))+1,valor)); DM.qBuscaAlertas.Close; DM.qBuscaAlertas.SQL.Clear; DM.qBuscaAlertas.SQL.Add(´SELECT A.DESCRICAO,A.DATACADASTRO,A.ATENDENTE,N.DESCRICAO AS DESCRICAOALERTA ´); DM.qBuscaAlertas.SQL.Add(´FROM ALERTA A INNER JOIN ´); DM.qBuscaAlertas.SQL.Add(´NIVELALERTA N ON A.CODNIVELALERTA = N.CODNIVELALERTA ´); DM.qBuscaAlertas.SQL.Add(´WHERE A.DESCRICAO LIKE :PDESCRICAO1 OR LIKE :PDESCRICAO2 ´); DM.qBuscaAlertas.SQL.Add(´UNION ALL ´); DM.qBuscaAlertas.SQL.Add(´SELECT A.DESCRICAO,A.DATACADASTRO,A.ATENDENTE,N.DESCRICAO AS DESCRICAOALERTA ´); DM.qBuscaAlertas.SQL.Add(´FROM HISTORICO_ALERTA A INNER JOIN ´); DM.qBuscaAlertas.SQL.Add(´NIVELALERTA N ON A.CODNIVELALERTA = N.CODNIVELALERTA ´); DM.qBuscaAlertas.SQL.Add(´WHERE A.DESCRICAO LIKE :PDESCRICAO3 OR :PDESCRICAO4 ´); DM.qBuscaAlertas.Parameters.ParamByName(´PDESCRICAO1´).Value := ´¬´+parametro1+´¬´; DM.qBuscaAlertas.Parameters.ParamByName(´PDESCRICAO2´).Value := ´¬´+parametro2+´¬´; DM.qBuscaAlertas.Parameters.ParamByName(´PDESCRICAO3´).Value := ´¬´+parametro1+´¬´; DM.qBuscaAlertas.Parameters.ParamByName(´PDESCRICAO4´).Value := ´¬´+parametro2+´¬´; DM.qBuscaAlertas.Open; If DM.qBuscaAlertas.RecordCount = 0 then Application.MessageBox(´Nenhum registro encontrado com este critério!´,´Informação´,mb_ok); exit;
Eric.miranda
Curtidas 0
Respostas
Paulo
23/08/2007
Aparentemente não há problema, mas falta mais detalhe, tais como: Qual a mensagem de erro que está dndo e etc... Olhando assim de bate-pronto, parece estar ok, mas por exemplo, se as chaves ammarradas no ON são essas mesmo e etc...
GOSTEI 0
Emerson Nascimento
23/08/2007
if Letra = ´#´ then begin parametro1 := Trim(Copy(Trim(edpalavra.text),1,Pos(´´,Trim(edpalavra.text))-1)); parametro2 := Trim(Copy(Trim(edpalavra.text),Pos(´´,Trim(edpalavra.text))+1,valor)); with DM.qBuscaAlertas do begin Close; SQL.Clear; SQL.Add(´SELECT A.DESCRICAO, A.DATACADASTRO, A.ATENDENTE, N.DESCRICAO AS DESCRICAOALERTA ´); SQL.Add(´FROM ALERTA A´); SQL.Add(´INNER JOIN NIVELALERTA N ON N.CODNIVELALERTA = A.CODNIVELALERTA ´); SQL.Add(´WHERE A.DESCRICAO LIKE :PDESCRICAO1 OR A.DESCRICAO LIKE :PDESCRICAO2 ´); SQL.Add(´UNION ALL ´); SQL.Add(´SELECT A.DESCRICAO, A.DATACADASTRO, A.ATENDENTE, N.DESCRICAO AS DESCRICAOALERTA ´); SQL.Add(´FROM HISTORICO_ALERTA A´); SQL.Add(´INNER JOIN NIVELALERTA N ON N.CODNIVELALERTA = A.CODNIVELALERTA ´); SQL.Add(´WHERE A.DESCRICAO LIKE :PDESCRICAO1 OR A.DESCRICAO LIKE :PDESCRICAO2 ´); with Parameters do begin ParamByName(´PDESCRICAO1´).Value := ´¬´+parametro1+´¬´; ParamByName(´PDESCRICAO2´).Value := ´¬´+parametro2+´¬´; end; end; DM.qBuscaAlertas.Open; // não use recordcount para verificar se HÁ registros no dataset. // use se você quiser saber QUANTOS há If DM.qBuscaAlertas.IsEmpty then Application.MessageBox(´Nenhum registro encontrado com este critério!´,´Informação´,mb_ok); exit; end;
note a alteração no where de ambas consultas.
onde estava
[i:47393dd0f3]WHERE A.DESCRICAO LIKE :PDESCRICAO1 OR LIKE :PDESCRICAO2[/i:47393dd0f3]
agora está
[i:47393dd0f3]WHERE A.DESCRICAO LIKE :PDESCRICAO1 OR [b:47393dd0f3]A.DESCRICAO[/b:47393dd0f3] LIKE :PDESCRICAO2[/i:47393dd0f3]
note também que, como você irá comparar os mesmos valores, não é necessário criar quatro parâmetros. apenas 2.
as demais alterações são ´estéticas´ :)
acho que é isso
GOSTEI 0