Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Dennis Ávila

Procurar produtos similares em outra tabela

Recommended Posts

Bom dia.

Venho solicitar mais uma vez a ajuda dos nossos amigos do forum.

Estou montando um sistema para localização de produtos no estoque da empresa, uma vez digitado determinado codigo ela retornara algumas informações, conforme tinha informado em um tópico de ontem q já foi solucionado.

Meu problema é o seguinte tem determinado produtos que tem mais de um código pq são de outros fabricantes, porem são as mesmas peças mais guardadas em lugares diferentes.

Fiz um esquema nesse sistema asp pra qdo o funcionario digitar o codigo abaixo das informações principais aparecerem os codigos similares, porem o sistema esta retornando a quantidade de item similares corretos só q todos com os codigos que estou usando pra pesquisar. exemplo:

código: 826823 - tem outros 2 código no sistema - 824044 - 9575242

Qdo manda fazer a busca no sistema ele me retorna as informações do código principal e abaixo repete 826823 - 826823.

A estrutura do banco de dados que estou usando de do sistema de gestão da empresa e tem duas tabelas relacionadas aos produtos:

 

tabela cad_prod

-codigo - (numeração automatica do sistema)

-numero_fabricante - (numero dos fornecedores exemplo:826823 - é o digitado no sistema de busca do produto e é os numeros q eu preciso q o sistema retorne)

 

tabela simil_prod

-produto (codigo da tabela cad_prod)

-produto_similar (codigo da tabela cad_prod do produto similar)

 

 

eu montei a seguinte pesquisa para tentar conseguir obter o resultado desejado:

 

		var rs = adoConnection.Execute("Select *, simil_prod.PROD_SIMILAR , simil_prod.PRODUTO , cad_prod.CODIGO , cad_prod.NUM_FABRICANTE From simil_prod Inner Join cad_prod On cad_prod.CODIGO = simil_prod.PRODUTO where UPPER(NUM_FABRICANTE) like UPPER('" + host + "')"); 


		var numRegistro = 1;

		Response.Write("<TABLE>");

		if(!rs.EOF)
		{
		Response.Write("<TR><TD><DIV CLASS = 'titulo'>CÓDIGO(S) SIMILAR(ES)</DIV></TD><TR>");



		}
		else
			Response.Write("");



		while(rs.EOF == false)
		{


				Response.Write("<TR onmouseover='this.style.backgroundColor=\"#eeeeee\"' onmouseout='this.style.backgroundColor=\"\"'>" +


				"<TD><DIV CLASS = 'linhaE'><B>" + rs("NUM_FABRICANTE") + "</B></DIV></A></TD><TR>");



			numRegistro++;
			rs.MoveNext();
		}
		Response.Write("</TABLE><BR>");




		rs.Close();
		adoConnection.Close();
}		
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você precisa ter uma relacionamento entre as tabelas, na verdade, a impôrtancia de uma modelagem de dados bem definida até os mínimos detalhes, como os campos de relacionamentos, um velho ditado diz, que um relacionamento bem definido é a alma do aplicativo, pois daí saem todas as consultas e operações com o banco, influenciando diretamente na otimização e performance do aplicativo

Compartilhar este post


Link para o post
Compartilhar em outros sites

As tabelas tem relacionamento, conforme mencionei o sistema ASP pesquisa informações entre elas sem problemas. Meu unico problema é como montar o Select para que seja exibida os codigos dos produtos similares pq a quantidade de itens similar o sistema esta me retornando corretamente.

Obrigado.

 

Segue foto do sistema, para analise:

fotosistema.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem que dar um response.write no PROD_SIMILAR, e não em NUM_FABRICANTE

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dentro do While, você chama o rs("Num_fabricante") não seria o similar ?

 

 

Se eu coloco rs("PROD_SIMILAR") dá quase e mesma situação ele me retorna os itens similares só q exibindo o código interno da empresa (autonumeração do sistema)

 

exemplo:

 

TABELA: CAD_PROD

CÓDIGO | NUMERO_FABRICANTE

1 ---------------- 826823

2 ---------------- 824044

3 ---------------- 9575241

 

TABELA: SIMIL_PROD

PRODUTO | PROD_SIMILAR

1 -------------------- 2

1 -------------------- 3

 

AGORA MUDANDO A OPÇÃO QUE O VINICIUS DISSE EU PROCURANDO O ITEM: 826823 O SISTEMA ME RETORNA O CODIGO AUTONUMERAÇÃO DO SISTEMA OU SEJA:

 

PRODUTO PESQUISADO:

826823

 

PRODUTOS SIMILARES:

2

3

 

 

E SE EU MUDO PRA RS (NUM_FABRICANTE FICA TUDO 826823), SENDO QUE O CORRETO ERA APARECER EM SIMILARES: 824044 - 9575241

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dentro do While, você chama o rs("Num_fabricante") não seria o similar ?

 

 

Se eu coloco rs("PROD_SIMILAR") dá quase e mesma situação ele me retorna os itens similares só q exibindo o código interno da empresa (autonumeração do sistema)

 

exemplo:

 

TABELA: CAD_PROD

CÓDIGO | NUMERO_FABRICANTE

1 ---------------- 826823

2 ---------------- 824044

3 ---------------- 9575241

 

TABELA: SIMIL_PROD

PRODUTO | PROD_SIMILAR

1 -------------------- 2

1 -------------------- 3

 

AGORA MUDANDO A OPÇÃO QUE O VINICIUS DISSE EU PROCURANDO O ITEM: 826823 O SISTEMA ME RETORNA O CODIGO AUTONUMERAÇÃO DO SISTEMA OU SEJA:

 

PRODUTO PESQUISADO:

826823

 

PRODUTOS SIMILARES:

2

3

 

 

E SE EU MUDO PRA RS (NUM_FABRICANTE FICA TUDO 826823), SENDO QUE O CORRETO ERA APARECER EM SIMILARES: 824044 - 9575241

 

Uma sugestão...

 

 

Voce pode na tabela de produtos similares deixar 3 colunas sendo: idproduto, fabricante e o fabricante_similar

 

Na minha opinião assim voce tem um controle melhor dos dados.

 

No select você pode por assim:

 

<%
sql="select * from prod_similar where idproduto =" & idprod & ""
set rsSimilar=suaconexao.execute(sql)

if not rsSimilar.EOF
  while not rsSimilar.EOF
     	if rsSimilar("fabricante")=idprod then
         id_similar=rsSimilar("fabricante_similar")
        else
        id_similar=rsSimilar("fabricante")
  end if
rsSimilar.movenext
wend
%>

 

o "idprod" será o que o usuário digitar no campo de busca.

 

É só uma ideia...

 

Eu utilizo desta maneira para relacionar produtos. Espero que te ajude de alguma forma

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dentro do While, você chama o rs("Num_fabricante") não seria o similar ?

 

 

Se eu coloco rs("PROD_SIMILAR") dá quase e mesma situação ele me retorna os itens similares só q exibindo o código interno da empresa (autonumeração do sistema)

 

exemplo:

 

TABELA: CAD_PROD

CÓDIGO | NUMERO_FABRICANTE

1 ---------------- 826823

2 ---------------- 824044

3 ---------------- 9575241

 

TABELA: SIMIL_PROD

PRODUTO | PROD_SIMILAR

1 -------------------- 2

1 -------------------- 3

 

AGORA MUDANDO A OPÇÃO QUE O VINICIUS DISSE EU PROCURANDO O ITEM: 826823 O SISTEMA ME RETORNA O CODIGO AUTONUMERAÇÃO DO SISTEMA OU SEJA:

 

PRODUTO PESQUISADO:

826823

 

PRODUTOS SIMILARES:

2

3

 

 

E SE EU MUDO PRA RS (NUM_FABRICANTE FICA TUDO 826823), SENDO QUE O CORRETO ERA APARECER EM SIMILARES: 824044 - 9575241

 

Uma sugestão...

 

 

Voce pode na tabela de produtos similares deixar 3 colunas sendo: idproduto, fabricante e o fabricante_similar

 

Na minha opinião assim voce tem um controle melhor dos dados.

 

No select você pode por assim:

 

<%
sql="select * from prod_similar where idproduto =" & idprod & ""
set rsSimilar=suaconexao.execute(sql)

if not rsSimilar.EOF
  while not rsSimilar.EOF
     	if rsSimilar("fabricante")=idprod then
         id_similar=rsSimilar("fabricante_similar")
        else
        id_similar=rsSimilar("fabricante")
  end if
rsSimilar.movenext
wend
%>

 

o "idprod" será o que o usuário digitar no campo de busca.

 

É só uma ideia...

 

Eu utilizo desta maneira para relacionar produtos. Espero que te ajude de alguma forma

 

 

Agradeço a dica e a atenção porem não posso mexer na arquitetura do banco de dados e tabelas pois conforme mencionei no inicio esse Bd é o utilizado no sistema de vendas / financeiro da empresa e eu utilizo o mesmo pra manter o sistema asp sempre atualizado qdo a quantidade de produtos e produtos lançamentos.

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dentro do While, você chama o rs("Num_fabricante") não seria o similar ?

 

 

Se eu coloco rs("PROD_SIMILAR") dá quase e mesma situação ele me retorna os itens similares só q exibindo o código interno da empresa (autonumeração do sistema)

 

exemplo:

 

TABELA: CAD_PROD

CÓDIGO | NUMERO_FABRICANTE

1 ---------------- 826823

2 ---------------- 824044

3 ---------------- 9575241

 

TABELA: SIMIL_PROD

PRODUTO | PROD_SIMILAR

1 -------------------- 2

1 -------------------- 3

 

AGORA MUDANDO A OPÇÃO QUE O VINICIUS DISSE EU PROCURANDO O ITEM: 826823 O SISTEMA ME RETORNA O CODIGO AUTONUMERAÇÃO DO SISTEMA OU SEJA:

 

PRODUTO PESQUISADO:

826823

 

PRODUTOS SIMILARES:

2

3

 

 

E SE EU MUDO PRA RS (NUM_FABRICANTE FICA TUDO 826823), SENDO QUE O CORRETO ERA APARECER EM SIMILARES: 824044 - 9575241

 

Uma sugestão...

 

 

Voce pode na tabela de produtos similares deixar 3 colunas sendo: idproduto, fabricante e o fabricante_similar

 

Na minha opinião assim voce tem um controle melhor dos dados.

 

No select você pode por assim:

 

<%
sql="select * from prod_similar where idproduto =" & idprod & ""
set rsSimilar=suaconexao.execute(sql)

if not rsSimilar.EOF
  while not rsSimilar.EOF
     	if rsSimilar("fabricante")=idprod then
         id_similar=rsSimilar("fabricante_similar")
    	else
    	id_similar=rsSimilar("fabricante")
  end if
rsSimilar.movenext
wend
%>

 

o "idprod" será o que o usuário digitar no campo de busca.

 

É só uma ideia...

 

Eu utilizo desta maneira para relacionar produtos. Espero que te ajude de alguma forma

 

 

Agradeço a dica e a atenção porem não posso mexer na arquitetura do banco de dados e tabelas pois conforme mencionei no inicio esse Bd é o utilizado no sistema de vendas / financeiro da empresa e eu utilizo o mesmo pra manter o sistema asp sempre atualizado qdo a quantidade de produtos e produtos lançamentos.

Obrigado.

 

Mas a ideia está aí, tente adaptar a sua arquitetura do BD.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pensei aqui num loop dentro desse loop pegando o id do produto e criando o sql para pegar o numero correto desse produto.

Não é a melhor solução, mas a considero mais pratica.

 

Boa tarde.

Primeiramente obrigado pela sugestão.

Poderia me dar um exemplo de como seria montado esse loop.

Compartilhar este post


Link para o post
Compartilhar em outros sites

dentro do while, na area que coloca o rs("prod_similar") voce cria:

sql2 = "select campo from tabela where id ="&rs("prod_similar")
set rs2.connexcute(sql2)

'Se tiver mais informações a acrescentar, crie um while aqui, como um loop normal, como no nosso caso só queremos o código correto do produto, bastará um 

response.write rs2("campo")

'assim exibirá o código do produto similar correto e não o id

 

Veja se dá certo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.