SELECT COM SUB TABELAS

05/09/2016

Boa noite pessoal, mais uma vez venho ate vocês com mas uma duvida.

Pois bem no meu projeto estou montando um forme para consultas no qual estou utilizando quatro formulários (tabelas) com os respectivos nomes: CADASTRO_REFERENCIAS (essa e a janela principal), CADASTRO_COLECOES , CADASTRO_VESTUARIO e CADASTRO_CLIENTES.

http://prntscr.com/celzl3 (print CADASTRO_REFERENCIAS)
http://prntscr.com/celzrr (print CADASTRO_COLECOES) ----------- FK de CADASTRO_REFERENCIAS
http://prntscr.com/celzxk (CADASTRO_VESTUARIO) ---------------- FK de CADASTRO_REFERENCIAS
http://prntscr.com/cem23d (CADASTRO_CLIENTES) ---------------- FK de CADASTRO_REFERENCIAS

dentro do DataModule (tabelaReferencias criei três field's: codColecoes, codTipoVestuario e codClientes (pra aparecer os nomes no dbgrid invés do Código)

dentro do meu formulário tenho um RarioGroup com 05 itens (no meu exemplo estou usando o item [03] com o nome Coleção.
tenho um DBGrid, um Edit (com o nome de EditBusca), um IBQuery com o nome de (ibAuxConsulta) e um DS com o nome (dsFormeConsulltas)
um botao com o seguinte comando no evento onClick

procedure TfConsRef.BotaoProcurarClick(Sender: TObject);
begin

B_Retornar.Enabled:=False;
ibAuxConsulta.Close;
ibAuxConsulta.SQL.Clear;
ibAuxConsulta.SQL.Add('Select REFFULL, REFDATACRIACAO, IDCLIENTES, IDCOLECOES, IDTECIDO1 from cadastro_Referencias');
case RG_Opcoes.ItemIndex Of

3:
begin //BUSCA POR COLECAO
ibAuxConsulta.SQL.Clear;
ibAuxConsulta.SQL.Add('select * from cadastro_referencias ref ');
ibAuxConsulta.SQL.Add('join cadastro_vestuario vest ');
ibAuxConsulta.SQL.Add('on ref.idtipovestuario = vest.idvestuario ');
ibAuxConsulta.SQL.Add('join cadastro_colecoes colec ');
ibAuxConsulta.SQL.Add('on ref.idcolecoes = colec.idcolecao ');
ibAuxConsulta.SQL.Add('and colec.colnome like :pcolecoes ');

ibAuxConsulta.ParamByName('pcolecoes').Value:= EditBusca.Text+'%';
ibAuxConsulta.Open;



ate ai tudo bem ta fazendo a busca, direitinho dento do IBExpert, mais quando eu coloco o programa pra rodar e mando fazer a busca do que eu quero ele nao ta mandando os campos como e pra ser como na imagem abaixo:

http://prntscr.com/cem8gn

os campos codTipoVestuario, codClientes e codColecoes nao estao aparecendo (essas são as field's criadas).

O que tem de errado com meu código?

Rubens Pena

Melhor resposta

07/09/2016

        begin  //BUSCA POR COLECAO
           ibAuxConsulta.SQL.Clear;// entrando na query e limpando
          ibAuxConsulta.SQL.Add('select * from cadastro_referencias ref      ');
          ibAuxConsulta.SQL.Add('join cadastro_vestuario vest on (ref.idtipovestuario = vest.idvestuario)          ');
          ibAuxConsulta.SQL.Add('join cadastro_colecoes colec on (ref.idcolecoes = colec.idcolecao)          ');
          ibAuxConsulta.SQL.Add('where (colec.colnome like :pcolecoes) -- where (lower(colec.colnome) like lower(:pcolecoes)))         ');





            ibAuxConsulta.ParamByName('pcolecoes').Value:=  EditBusca.Text+'%';
            ibAuxConsulta.Open;
        end;


http://prntscr.com/cf9pxw

fica dando o seguinte erro: Unknown SQL Data type (0) quando coloco o programa pra rodar e clico no botao de consulta

Rubens Pena

Responder Citar

Outras Respostas

06/09/2016

Rubens Pena

continuo travado, algum se prontifica em me ajudar?
Responder Citar

07/09/2016

Raylan

Tente assim e veja se retorna certo
select * from cadastro_referencias ref 
join cadastro_vestuario vest on (ref.idtipovestuario = vest.idvestuario) 
join cadastro_colecoes colec on (ref.idcolecoes = colec.idcolecao)
where (colec.colnome like :pcolecoes) -- where (lower(colec.colnome) like lower(:pcolecoes))
Responder Citar

07/09/2016

Raylan


ibAuxConsulta.SQL.Add('where (colec.colnome like :pcolecoes)    ');
ibAuxConsulta.ParamByName('pcolecoes').AsString :=  EditBusca.Text+'%';

Responder Citar

09/09/2016

Rubens Pena

Boa noite, depois de seguir as orientações de Raylan e ver alguns estudos em videos na net consegui criar a sql pro meu problema, agora ta dando certo.

3:
        begin  //BUSCA POR COLECAO

          ibAuxConsulta.SQL.Clear;// entrando na query e limpando
          ibAuxConsulta.SQL.Add(' select REFFULL as Referencia, REFDATACRIACAO as Data, VEST.VESNOME as Vestuario, CLINOME as Cliente, REFANO as Ano, COLEC.COLNOME  as Colecao, TEC.TECNOME as Tecido1, REFDESCRICAO as Descricao  ');
          ibAuxConsulta.SQL.Add('   from  cadastro_referencias ref                                                 ');
          ibAuxConsulta.SQL.Add('   join cadastro_vestuario vest   on  ref.idtipovestuario = vest.idvestuario      ');
          ibAuxConsulta.SQL.Add('   join cadastro_colecoes  colec  on  ref.idcolecoes      = colec.idcolecao       ');
          ibAuxConsulta.SQL.Add('   join cadastro_clientes  clie   on  ref.idclientes      = clie.idcliente        ');
          ibAuxConsulta.SQL.Add('   join cadastro_tecidos   tec    on  ref.idtecido1       = tec.idtecido          ');

          if  EditBusca.Text <> '' then
           begin
              ibAuxConsulta.SQL.Add('and colec.colnome like :pcolecoes           ');
              ibAuxConsulta.ParamByName('pcolecoes').Value:=  EditBusca.Text+'%';
           end;
          ibAuxConsulta.Open;
Responder Citar

09/09/2016

Rubens Pena

So que a estrutura da dbgrid não ficou como eu quero, as colunas ficaram com muito espaço. Gostaria de saber qual seria os comandos para deixar as colunas com a largura por mim estabelecida.

http://prntscr.com/cg9836
Responder Citar