Jump to content
Fórum Script Brasil
  • 0
Sign in to follow this  
RapidFire

Tabela com resultados separados por vígula

Question

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.

Share this post


Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 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

Edited by fercosmig

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  



  • Forum Statistics

    • Total Topics
      148578
    • Total Posts
      644284
×
×
  • Create New...