Ir para conteúdo
Fórum Script Brasil
  • 0

Tabela com resultados separados por vígula


RapidFire

Pergunta

TABELA_SEGMENTOS

-------------------------

id_segmento | segmento |

-------------------------

1 | Roupas |

-------------------------

2 | Calçados |

-------------------------

3 | Óculos |

-------------------------

TABELA_CLIENTES

--------------------------------------

id_cliente | raza_social | segmento |

--------------------------------------

1 | joao Silva ME| 1,2 |

--------------------------------------

2 | LL Souza | 2 |

--------------------------------------

3 |Porto & Porto | 3,1 |

--------------------------------------

4 | MAzeline S/A | 1 |

--------------------------------------

O que preciso e que quando se fizer uma busca pela razão social esta seja listada e seja mostrado o nome do segmento que ela pertence.

Por exemplo:

João Silva ME - Roupas e Calçados

Porto e POrto - Roupas e Óculos

Mazeline - Roupas

Já tentei de tudo mais não consigo separar e mostrar resultados com virgula e exibilos.

Sei que tenho que usar um Split, For e Next mais não estou conseguindo. Não sei porque mais não consigo fazer nada usando FOR

<%
str_procura    = Trim(Request("procura"))
str_tipo_busca = Request("tipo_busca")

if str_tipo_busca = 0 Then

Set ObjRS_ = Server.CreateObject("ADODB.RecordSet")
str_SQL = "SELECT * FROM tb_clientes WHERE nome_fantasia like '%"& str_procura &"%'"
Set ObjRS_ = ObjCon.Execute(str_SQL)

Else

Set ObjRS = Server.CreateObject("ADODB.RecordSet")
str_SQL = "SELECT * FROM tb_segmentos WHERE segmentos like '%"& str_procura &"%'"
Set ObjRS = ObjCon.Execute(str_SQL)

if Not ObjRS.EOF Then 
str_id_segmento = ObjRS("id_segmento")
End if

str_letra = split(str_id_segmento,",",-1,1)

For i = 0 to UBOUND(str_letra) 
Set ObjRS_ = Server.CreateObject("ADODB.RecordSet")
str_SQL = "SELECT * FROM tb_clientes WHERE segmentos = "& str_letra &""
Set ObjRS_ = ObjCon.Execute(str_SQL)
Next

End if
%>

Agradeço a ajuda.

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

no relacionamento n -> n, e vez de separar por virgula os valores, cria uma tabela de relacionamento com o id do cliente e o id do segmento, ai você busca na tabela de segmentos tudo que tem na tabela de relacionamentos com o id do cliente

neste seu caso você pode procurar usando o in

select * from segmentos where id_segmento in (1,2)

----- edited -----

ou então você quebra a string com o Split() e faz um for Each para buscar os segmentos um a um

Editado por fercosmig
Link para o comentário
Compartilhar em outros sites

  • 0

:blink:

Fiz como você falow mais não deu certo. Não sei mais o que fazer. Por favor ajuda-me!!!!

Fiz o seguinte:

<%
str_procura    = Trim(Request("procura"))

Set ObjRS = Server.CreateObject("ADODB.RecordSet")
str_SQL = "SELECT * FROM tb_segmentos WHERE segmentos like '%"& str_procura &"%'"
Set ObjRS = ObjCon.Execute(str_SQL)

if Not ObjRS.EOF Then 
str_id_segmento = ObjRS("id_segmento")
End if

str_loop = split(str_id_segmento,";",-1,1)

For i = 0 to Ubound(str_loop) 

Set ObjRS_ = Server.CreateObject("ADODB.RecordSet")
str_SQL = "SELECT * FROM tb_clientes_lista WHERE segmentos = '"& str_loop(i) &"'"
Set ObjRS_ = ObjCon.Execute(str_SQL)

Next
End if
%>

Mais ele não lista nada quando no banco de dado os segmentos estão separados por ";"

Se puderem me ajudar agreço muito.

Link para o comentário
Compartilhar em outros sites

  • 0

Não entendi ao certo o que você quer fazer, o que a query abaixo retorna?

str_SQL = "SELECT * FROM tb_segmentos WHERE segmentos like '%"& str_procura &"%'"
Outra coisa, na segunda query, dentro do loop, você executa a query e não mostra nada.
For i = 0 to Ubound(str_loop)

Set ObjRS_ = Server.CreateObject("ADODB.RecordSet")
str_SQL = "SELECT * FROM tb_clientes_lista WHERE segmentos = '"& str_loop(i) &"'"
Set ObjRS_ = ObjCon.Execute(str_SQL)

Next

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --RapidFire --

Sim é exatamente isso.

Recupero qual o ID relativo a procura e depois listo os registros da tb_cliente_lista que tem os mesmos IDs. O problema e que não aparece erro, mais não aparece registro algum. E os registros dos segmentos, estão separados por virgula. Ex: 256, 2, 63

Agradeço ajudas.

RapidFire

Link para o comentário
Compartilhar em outros sites

  • 0
O problema e que não aparece erro, mais não aparece registro algum.
Foi exatamente isso que eu disse, acrescente este trecho dentro do loop e veja o que aparece
For i = 0 to Ubound(str_loop)

Set ObjRS_ = Server.CreateObject("ADODB.RecordSet")

str_SQL = "SELECT * FROM tb_clientes_lista WHERE segmentos = '"& str_loop(i) &"'"

Set ObjRS_ = ObjCon.Execute(str_SQL)

If Not ObjRS_.EOF Then

Response.Write ObjRS_.Fields.Item(0).Value & "<br />"

End If

Next

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...