ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

[Resolvido] Join+Where - Não aceita parametro String

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
lokasso
Aprendiz
Aprendiz


Registrado: Terça-Feira, 11 de Abril de 2017
Mensagens: 174

MensagemEnviada: Qui Nov 16, 2017 6:20 pm    Assunto: [Resolvido] Join+Where - Não aceita parametro String Responder com Citação

Galera, é o seguinte estou fazendo um relacionamento entre varias tabelas usando o JOIN, porém não estou conseguindo passar parametro string

TB_Autor, TB_AutorLivro, TB_BiblioLivro, TB_Assunto, TB_Editora, TB_Genero, onde me retorna:

RefdoLivro, Titulo, SubT, Autor, Editora, Assunto e Genero

A TB_AutorLivro é n(livros):n(autores)

Estou usando FireDac, Delphi 10.2 e FireBird 3.0.2

Está ai o código: (só fiz por autor por enquanto):



Código:
procedure TFrm_Busca.Btn_OKClick(Sender: TObject);
begin
  with DM_Principal do
    begin
      with FDQ_BLivro do
        begin
          Close;
          SQL.Clear;
          SQL.Add('SELECT BL.ID_BIBLIOLIVRO,BL.TITULO_DESC,BL.SUBT_DESC,BL.VOLUME,BL.EDITORA,');
          SQL.Add('BL.GENERO,BL.REF,BL.STATUS,BL.BAIXA,ASL.DESC_ASSUNTO,AU.NOME_AUTOR,');
          SQL.Add('ED.NOME_EDITORA,G.NOME_GENERO');

          case VBusca(RG_B.ItemIndex) of

//            BAssunto:
//              begin
//
//              end;

            BAutor:
              begin
                SQL.Add('FROM TB_AUTOR AU LEFT JOIN TB_AUTORLIVRO AL ON AL.ID_AUTOR = AU.ID_AUTOR');
                SQL.Add('JOIN TB_BIBLIOLIVRO BL ON AL.ID_BIBLIOLIVRO = BL.ID_BIBLIOLIVRO');
                SQL.Add('JOIN TB_ASSUNTO ASL ON BL.ID_BIBLIOLIVRO = ASL.ID_BIBLIOLIVRO');
                SQL.Add('JOIN TB_EDITORA ED ON BL.EDITORA = ED.ID_EDITORA');
                SQL.Add('JOIN TB_GENERO G on BL.GENERO = G.ID_GENERO');
                SQL.Add('WHERE 1 = 1 ');
               


Até aqui roda uma maravilha o SQL, porém abaixo nada, ja fiz um teste trocando o campo para id_autor e roda perfeitamente, não sei porque está ignorando o parametro, pois tirando a linha abaixo continua rodando e retorna os valores tambem

Código:
SQL.Add('AND AU.NOME_AUTOR LIKE ' + QuotedStr(Edt_B.Text)+ '%');


Como eu disse acima a partir daqui continua rodando

Código:
               SQL.Add('AND BL.BAIXA = ' + QuotedStr('N'));
                Open;
                FetchAll;
                if RecordCount = 0 then
                  ShowMessage('Autor não encontrado');
              end;
          end;
        end;
    end;
end;


Devo estar esquecendo de algo


Grato


Editado pela última vez por lokasso em Sex Nov 17, 2017 6:58 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Nov 16, 2017 9:20 pm    Assunto: Responder com Citação

Boa noite,

Experimente deixar o sinal de '%' dentro do QuotedStr para que ele fique entre aspas tambem:

Código:
SQL.Add('AND AU.NOME_AUTOR LIKE ' + QuotedStr(Edt_B.Text + '%'));


Espero que ajude

_________________
Assinatura: https://www.imoveisemexposicao.com.br/imoveis-venda-guarulhos!picanço-residencial-apartamento
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
lokasso
Aprendiz
Aprendiz


Registrado: Terça-Feira, 11 de Abril de 2017
Mensagens: 174

MensagemEnviada: Sex Nov 17, 2017 6:57 pm    Assunto: Responder com Citação

imex escreveu:
Boa noite,

Experimente deixar o sinal de '%' dentro do QuotedStr para que ele fique entre aspas tambem:

Código:
SQL.Add('AND AU.NOME_AUTOR LIKE ' + QuotedStr(Edt_B.Text + '%'));


Espero que ajude

_________________
Assinatura: https://www.imoveisemexposicao.com.br/imoveis-venda-guarulhos!picanço-residencial-apartamento


Valeu imex, funcionou perfeitamente, eu nao tinha nem reparado que tinha deixado ele fora do ")".

Valeu brother tu é o cara

Abraços
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB