Campo Lookup: Pesquisar com campo lookup

Delphi

17/01/2007

Boa tarde pessoal:

tm um campo lookup (qryNOMEMARCA) ... pq eu salvo no db somente o ID da marca....

entao no grid pra mostrar no nome da marca eu ligo o campo com a qryNOMEMARCA.....


agora ... c o usuario quiser procurar a marca : ID= 10 (SKOL) por exemplo ...

como eu montaria o sql pra pesquisar a marca SKOL ....??? visto q no db so ta salvo id = 10


Output

Output

Curtidas 0

Respostas

Aroldo Zanela

Aroldo Zanela

17/01/2007

Colega,

Um alternativa é o uso de campos lookups que podem ser adicionados por meio do Fields Editor.


GOSTEI 0
Output

Output

17/01/2007

Desculpa kra .... mais naum entendo como eu faria issu ???
teria como dar uma detalhada pra mim???


tendo em vista q ja foi criado um campo lookup para mostrar o nomedamarca

o problema ta na consulta.....


aguardo retorno


GOSTEI 0
Ruyoutor

Ruyoutor

17/01/2007

Amigo acho q assim da certo

select ID from tabela dolookup
where ID = ANY(select ID from tabela_q_tem_o_nome
where nome = ´SKOl´)


cara tenta ai eu fiz com um banco que eu tenho aki e funcionou eu usei SQL Server, mas acredito que todos os bancos dão suporte a função ´ANY´

Se funcionar vc posta ai

vlw!


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

17/01/2007

[quote:e63313e291=´Rodrigo Miss´]Desculpa kra .... mais naum entendo como eu faria issu ???
teria como dar uma detalhada pra mim???


tendo em vista q ja foi criado um campo lookup para mostrar o nomedamarca

o problema ta na consulta.....


aguardo retorno[/quote:e63313e291]
Colega,

Agora caiu a ficha (acho). Você quer saber como relacionar as duas tabelas numa consulta? É isso? Ou ainda não entendi?


GOSTEI 0
Output

Output

17/01/2007

Exatamente [b:77c9fcdc05]Aroldo Zanela [/b:77c9fcdc05]
pq na tabela de produtos vai ta gravado somente o id da marca
e no grid de produtos ao inves de mostrar o id da marca ele mostra o nome da marca (q eh um lookup - pega o id da marca e exibe o nome da marca)


oke eu qria saber eh como eu faço ... digamo q o user digite num edit de pesquisa o nome da marca .... como vou pesquisar por nome da marca c no db esta gravado somente o id da marca??

entende?

fiko mto grato msm c puder me ajudar... tenha uma boa tarde. ..


GOSTEI 0
Ruyoutor

Ruyoutor

17/01/2007

Cara esse código que eu te passei eu acho q faz isso. Eu entendo bem o seu problema pq eu já tive ele tambem.

Esse caso vc vai usar uma subquery para consultar a tabela que tem a marca(SKOL) através do que o usuário digitar no edit, e retornar o codigo da marca para a consulta principal exibir os registros que tenham essa ID(10)


GOSTEI 0
Output

Output

17/01/2007

Boa Tade [b:428bc6400b]ruyoutor[/b:428bc6400b] td joia

desculpa naum tinha visto seu post antes ... so agora fui ver ...

tentei da forma q vc flw ... fiz assim:


procedure TfrmProduto.txtConsultaChange(Sender: TObject);
begin
 qry.Close;
 qry.SQL.Clear;
 qry.SQL.Add(´SELECT ID_MARCA FROM PRODUTOS´);
 qry.SQL.Add(´WHERE ID_MARCA = ANY(SELECT ID FROM MARCA WHERE MARCA = ´ + ´´´´ + txtConsulta.Text + ´´´´);
 qry.Open;
end;
end;



na execuca do projeto me retorna o seguint erro:
[b:428bc6400b]line 2: Incorrect syntax near ´SKOL´[/b:428bc6400b]

ps: uso o banco MS SQL SERVER 2000


GOSTEI 0
Ruyoutor

Ruyoutor

17/01/2007

tenta assim

procedure TfrmProduto.txtConsultaChange(Sender: TObject); 
var
 Consulta: String;
begin 
   Consulta:= ´Select ID_Marca from Produtos´;
   Consulta:= Consulta + ´ where ID_MARCA = ANY´;
   Consulta:= Consulta + ´(Select ID from MARCA where MARCA = ´;
   Consulta:= Consulta + #39+txtConsulta.text+39;
   qry.Close; 
   qry.SQL.Clear; 
   qry.SQL.Add(Consulta)
   qry.Open; 
end; 
 39 vai colocar o valor do editi entre aspas na consulta preste muita atenção nos espaços, como é uma consulta muito grande vc pode se descuidar e ficar alguma coisa colada na outra.

Outra coisa eu só criei a variável consulta pq ñ sei com qual query vc está trabalhando porque tem componetes query que da para inserir o codigo direto da linha desejada.
 Ex: query1.sql[1]:= ´codigo´;
Isso é possível no ADOQuery que é o que eu estou usando no momento nesse que vc esta usando eu não sei.

Acho q no seu ñ tava funcionando pq quando vc da um add ele limpa automaticamente o q está dentro da propriedade SQL não tenho certeza mais acho q sim e eu numca trabalhei com aspas igual vc colocou mas tenho certeza que com #39 vai funcionar.

tentai ai qualquer coisa estamos ai

vlw!



GOSTEI 0
Ruyoutor

Ruyoutor

17/01/2007

cara foi mau dei um mole aki e foi tudo no código, mas acho q dar pra entender. Muita correria é fogo rsrs


GOSTEI 0
Output

Output

17/01/2007

kra.... fiz exatamente como vc me passou ....

da o msm erro de antes ....

to usando ADOQuery....

oke eu faço agora ....


GOSTEI 0
Output

Output

17/01/2007

AHH Nem eskente deu pra entender direitinho oke tava escrito ....


soh q naum quer da certo aki kra .... sera q eu fiz coisa errada?


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

17/01/2007

Colega,

Criei um banco hipotético aqui só para servir de base para o exemplo:

Banco de dados (SQL Server 2000):
/*==============================================================*/
/* Table: MARCAS                                                */
/*==============================================================*/
create table MARCAS (
   MARC_ID              int                  not null,
   MARC_NOME            varchar(30)          not null,
   constraint PK_MARCAS primary key  (MARC_ID)
)
go

/*==============================================================*/
/* Table: PRODUTOS                                              */
/*==============================================================*/
create table PRODUTOS (
   PROD_ID              int                  not null,
   MARC_ID              int                  null,
   PROD_DESCRICAO       varchar(60)          not null,
   constraint PK_PRODUTOS primary key  (PROD_ID)
)
go

/*==============================================================*/
/* Index: RELATIONSHIP_1_FK                                     */
/*==============================================================*/
create   index RELATIONSHIP_1_FK on PRODUTOS (
MARC_ID ASC
)
go

alter table PRODUTOS
   add constraint FK_PRODUTOS_RELATIONS_MARCAS foreign key (MARC_ID)
      references MARCAS (MARC_ID)
go


Criando um select com associação entre as tabelas que permita localizar os produtos pelo nome da marca:

select 
    *
from
    produtos
inner join
    marcas
on
    (produtos.marc_id = marcas.marc_id)
where
    marcas.marc_nome =´MARCA´



GOSTEI 0
Ruyoutor

Ruyoutor

17/01/2007

Cara criei as tabela aki e testei esse código:

select * from produto
where ID_MARCA = ANY(select ID from marca
where marca = ´SKOL´)


esse codigo foi testado no sql server 2000

sendo q no lugar das aspas e de SKOL vc coloca #39+txtconsulta

esse código que eu estou te passando foi testado e funcionou

As tabelas que eu criei forma

Produto:
ID
ID_MARCA
NOME

Marca:
ID
MARCA


GOSTEI 0
Output

Output

17/01/2007

vlw pessoal :

Obrigado Aroldo Zanela,
Obrigado ruyoutor .

Aroldo Zanela, da forma q vc me passo ou testei aki e funcionou direitinho do geito q eu qria ... vlw msm kra pela força ....

ruyoutor, da forma q vc me passou naum da certo kra .... sra q eh eu q to fazendo algo errado :

to fazendo assim:

qry.Close;
qry.SQL.Clear;
qry.SQL.Add(´select * from produtos´);
qry.SQL.Add(´where ID_MARCA = ANY(select ID from marca where marca = ´ + #39 + txtConsulta.Text + 39);
qry.Open;
end;

ele me da o msm erro

c eu tirar o 39 ele me da o erro:

Unclosed quotation mark before the character string


de qualquer forma vlw tb kra .... vlw pelas dicas


GOSTEI 0
POSTAR