Ir para conteúdo

POWERED BY:

Arquivado

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

kania

Conexão no BD mas com Tabelas diferentes

Recommended Posts

Ola pessoal,Preciso de ajuda num script que estou montando, tenho um BD nele tenho 3 tabelas vinculadas, são elas:- ListaBairro (somente uma coluna bairro com chave primaria)- Categoriaservicos (somente uma coluna categoria com chave primaria)- CadstroServbairro (varias colunas para cadastro dos servicos entre elas as colunas bairro_rec e categoria_rec que estão vinculadas as tabelas ListaBairro e Categoriaservicos)Oque preciso fazer ?Preciso que na primeira pagina aparecam 2 colunas uma listando todas as categorias da tabela CategoriaServicos e na outra coluna listando todos os bairros da tabela ListaBairro,(como se fosse um tipo de filtro, o visitante pode escoler se quer ver os serviços por bairro ou por categoria, só que na lista vai aparecer tanto as categorias disponiveis como os bairros disponiveis) todos respectivamente com links que posteriormente levaram a pagina_2 mostrando os detalhes do link clidado (lembrando que podemos ter vario registros na mesma categoria ou no mesmo bairro, então devera aprecer todos os registros desta categoria ou bairro conforme o visitante escolher)Fiz o script de varias formas, mas todas elas deram errado, (não necessariamente que deu erro na pagina, mas o script não funcionou como eu esperava), ou ele retornava sempre o mesmo registro independe do link clicado, ou ele retornava todos os registro da tabela CadstroServBairro, ou ele não retornava nada, ou dizia que o arquivo solicitado não fazia parte da coleção solicitada, e por ai adiante, ja to batendo cabeça com isso a uma semana, não consegui achar nenhum script ou tutotial que pudesse me ajudar nesta questão, ai resolvi apelar para quem sabe mais doque eu.Como ja não tinha mas aquem recorrer resolvi buscar ajuda de quem sabe realmente.se alguem souber como fazer isto que estou tentando, por favor ficarei muito grato.Podem me contatar tabem pelo msn se for o caso: fabianokania@msn.comObs.: SOU INICIANTE EM ASP, POR ISSO ESTOU BATENDO A CABEÇA, ESTE SCRIPT ESTOU FAZENDO PARA TREINAR E APRENDER.Jorge Kania

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara acho que no seu caso você precisa utilizar sql com JOIN da cláusula select para unir varias tabelaspor exemplo, se eu tivesse 2 tabelas clientes e dependentes e em clientes o PK seria cod_cli e em dependente cod_cli seria FK e você quisesse listar pela categoria sql = "SELECT * FROM clietes INNER JOIN dependentes ON clietes.cod_cli = dependentes.cod_cli WHERE dependentes.categoria ='juvenil';se for o caso da para agrupar o resultado voltando por gruposql = "SELECT * FROM clietes INNER JOIN dependentes ON clietes.cod_cli = dependentes.cod_cli WHERE dependentes.categoria ='juvenil' GROUP BY clientes.cod_cli;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fera cheguei a tentar o INNER JOIN, só que oque ocorria é que ele juntava as duas categorias, ex.- Tabela ListaBairro, com coluna bairro em chave primaria- Tabela Categoriasservicos, com coluna categoria em chave primaria- Tabela CadstroServbairro, com varias coluna nenhuma com chave primaria, mas vinculadas pelas colunas bairro_rec e categoria_rec.Quando eu tentei fazer o INNER JOIN ele juntos as tabelas e mostrou somente os itens cadastrados na tabela CadastroServBairro, e não é isto que eu preciso, eu preciso que aparece todas as categorias e bairros das tabelas Listabairro e CategoriaServicos e ai sim quando o visitante clicasse em uma delas ( ex. clico no bairro cabral ou na categoria Academia), ela leva para a pagina que mostrara os detalhes contidos na tabela CadastroServBairro conforme o link clicado (ex. clico em Academis que vai estar na tabela CategoriaServicos e leva para a pagina detalhes mostrando todas as academias que tenho cadastrado na tabela CadastroServBairro). e ja bati a cabeça tentando fazer isto e ainda estou batendo e não consegui um comando sql ou outro qualquer que desse o resultado esperado. se souber como faz vou ficar muito grato pela a juda, pode me contatar pelo msn ou icq.MSN: fabianokania@msn.comICQ.: 278.943.205Um Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim estou trabalahando com BD em access.

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Até estive pensando que não muita necessidade de haver dois tipos de pesquisa, somente uma lista de todas as categorias com links para exibi-las ja é o suficiente, mais tarde eu penso se vai realmente ser necessario uma com os bairros, mas neste momento se eu conseguir fazer uma com as categorias ja vai suprir a necessidade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim estou trabalahando com BD em access. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Até estive pensando que não muita necessidade de haver dois tipos de pesquisa, somente uma lista de todas as categorias com links para exibi-las ja é o suficiente, mais tarde eu penso se vai realmente ser necessario uma com os bairros, mas neste momento se eu conseguir fazer uma com as categorias ja vai suprir a necessidade.

Pq você nao faz uma view pelo Access?Ele mesmo monta pra você.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não basta cria um combo com os valores da tabela de serviços e passar este valor pra outra pagina que exibirá os resultados"SELECT * FROM CadstroServbairro WHERE Servico = " & Request("CodServico")

Compartilhar este post


Link para o post
Compartilhar em outros sites

marioufpa, posso te mandar via e-mail o BD para você dar uma olhada ? Acho que não estou conseguindo te passar direito oque eu to tentando fazer, é que na verdade não é um combo que eu vou colocar, é uma lista dentro de uma tabela, com todos os registros. eu te mando o BD e você ve, caso achar que necessita mudar alguma coisa fica a vontade, e depois só me explica como você fez. Desculpa minha ignorancia, é que sou novo em ASP, to até pensando em procurar um curso bom porque sozinho em coisas como esta que é mais complexa estou me batendo bastante

Compartilhar este post


Link para o post
Compartilhar em outros sites

marioufpa, posso te mandar via e-mail o BD para você dar uma olhada ? Acho que não estou conseguindo te passar direito oque eu to tentando fazer, é que na verdade não é um combo que eu vou colocar, é uma lista dentro de uma tabela, com todos os registros. eu te mando o BD e você ve, caso achar que necessita mudar alguma coisa fica a vontade, e depois só me explica como você fez. Desculpa minha ignorancia, é que sou novo em ASP, to até pensando em procurar um curso bom porque sozinho em coisas como esta que é mais complexa estou me batendo bastante

mas você não está só tentando aprender...Então apenas vai postando as suas duvidas que sempre alguem te ajudar ou te indicará um caminho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sem problemas, é que eu só penseu que se eu estudasse o arquivo ficaria mais facio de entender oque foi feito, mas sem problemas.então vamos la, como eu disse anteriormente, é como se fosse um menu, onde tem as categorias (neste caso as categorias esta dentro da tabela CategoriaServicos, que tem mais ou menos 120 categorias, lembrando que nesta tabela só tem uma coluna com o nome categoria e ela esta como chave primaria e vinculada a tabela CadstroServBairro que esta vinculada a tabela CategoriaServicos pela coluna categoria), clicando neste menu e leva você para a categoria clicada listando todos os registros daquela categoria.O meu problema esta exatamente ai, eu consigo listar toda a tabela CategoriaServicos ja com os links tudo certinho, porem quando clico em uma categoria ele não abre a categoria clicada, ele traz todos os registros que tem cadastrdo na tabela CadastroServbairro, ou traz apenas um registro fixo (sempre o mesmo), ja fiz varios tipos de select, ja tentei abrir as duas tabelas, olha ja tentei de tudo, mas nada deu certo, e como eu vejo direto em sites sendo feito isto acredito que é possivel, só que eu ainda não consegui fazer, inclusive ja baixei vario códigos prontos, mas nehum deles esclareceu. Bom vou ficar esperando para ver se desta vez eu consigo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara fa o seguinte posta pra gente o trecho de codigo que lista as categorias com os liks e tal na outra pagina o SELECT que você faz pra pegar os bairros onde tem o serviços que deveriam vir...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pagina que exibe as Categorias<---------INICIO DO CÓDIGO---------><%@LANGUAGE="VBSCRIPT"%><!--#include file="../Connections/conBairro.asp" --><%Dim RsBairroDim RsBairro_numRowsSet RsBairro = Server.CreateObject("ADODB.Recordset")RsBairro.ActiveConnection = MM_conBairro_STRINGRsBairro.Source = "SELECT * FROM CategoriaServicos ORDER BY categoria ASC"RsBairro.CursorType = 0RsBairro.CursorLocation = 2RsBairro.LockType = 1RsBairro.Open()RsBairro_numRows = 0%><%Dim Repeat1__numRowsDim Repeat1__indexRepeat1__numRows = -1Repeat1__index = 0RsBairro_numRows = RsBairro_numRows + Repeat1__numRows%><%' *** Recordset Stats, Move To Record, and Go To Record: declare stats variablesDim RsBairro_totalDim RsBairro_firstDim RsBairro_last' set the record countRsBairro_total = RsBairro.RecordCount' set the number of rows displayed on this pageIf (RsBairro_numRows < 0) Then RsBairro_numRows = RsBairro_totalElseif (RsBairro_numRows = 0) Then RsBairro_numRows = 1End If' set the first and last displayed recordRsBairro_first = 1RsBairro_last = RsBairro_first + RsBairro_numRows - 1' if we have the correct record count, check the other statsIf (RsBairro_total <> -1) Then If (RsBairro_first > RsBairro_total) Then RsBairro_first = RsBairro_total End If If (RsBairro_last > RsBairro_total) Then RsBairro_last = RsBairro_total End If If (RsBairro_numRows > RsBairro_total) Then RsBairro_numRows = RsBairro_total End IfEnd If%><%' *** Recordset Stats: if we don't know the record count, manually count themIf (RsBairro_total = -1) Then ' count the total records by iterating through the recordset RsBairro_total=0 While (Not RsBairro.EOF) RsBairro_total = RsBairro_total + 1 RsBairro.MoveNext Wend ' reset the cursor to the beginning If (RsBairro.CursorType > 0) Then RsBairro.MoveFirst Else RsBairro.Requery End If ' set the number of rows displayed on this page If (RsBairro_numRows < 0 Or RsBairro_numRows > RsBairro_total) Then RsBairro_numRows = RsBairro_total End If ' set the first and last displayed record RsBairro_first = 1 RsBairro_last = RsBairro_first + RsBairro_numRows - 1 If (RsBairro_first > RsBairro_total) Then RsBairro_first = RsBairro_total End If If (RsBairro_last > RsBairro_total) Then RsBairro_last = RsBairro_total End IfEnd If%><%Dim MM_paramName %><%' *** Move To Record and Go To Record: declare variablesDim MM_rsDim MM_rsCountDim MM_sizeDim MM_uniqueColDim MM_offsetDim MM_atTotalDim MM_paramIsDefinedDim MM_paramDim MM_indexSet MM_rs = RsBairroMM_rsCount = RsBairro_totalMM_size = RsBairro_numRowsMM_uniqueCol = ""MM_paramName = ""MM_offset = 0MM_atTotal = falseMM_paramIsDefined = falseIf (MM_paramName <> "") Then MM_paramIsDefined = (Request.QueryString(MM_paramName) <> "")End If%><%' *** Move To Record: handle 'index' or 'offset' parameterif (Not MM_paramIsDefined And MM_rsCount <> 0) then ' use index parameter if defined, otherwise use offset parameter MM_param = Request.QueryString("index") If (MM_param = "") Then MM_param = Request.QueryString("offset") End If If (MM_param <> "") Then MM_offset = Int(MM_param) End If ' if we have a record count, check if we are past the end of the recordset If (MM_rsCount <> -1) Then If (MM_offset >= MM_rsCount Or MM_offset = -1) Then ' past end or move last If ((MM_rsCount Mod MM_size) > 0) Then ' last page not a full repeat region MM_offset = MM_rsCount - (MM_rsCount Mod MM_size) Else MM_offset = MM_rsCount - MM_size End If End If End If ' move the cursor to the selected record MM_index = 0 While ((Not MM_rs.EOF) And (MM_index < MM_offset Or MM_offset = -1)) MM_rs.MoveNext MM_index = MM_index + 1 Wend If (MM_rs.EOF) Then MM_offset = MM_index ' set MM_offset to the last possible record End IfEnd If%><%' *** Move To Record: if we dont know the record count, check the display rangeIf (MM_rsCount = -1) Then ' walk to the end of the display range for this page MM_index = MM_offset While (Not MM_rs.EOF And (MM_size < 0 Or MM_index < MM_offset + MM_size)) MM_rs.MoveNext MM_index = MM_index + 1 Wend ' if we walked off the end of the recordset, set MM_rsCount and MM_size If (MM_rs.EOF) Then MM_rsCount = MM_index If (MM_size < 0 Or MM_size > MM_rsCount) Then MM_size = MM_rsCount End If End If ' if we walked off the end, set the offset based on page size If (MM_rs.EOF And Not MM_paramIsDefined) Then If (MM_offset > MM_rsCount - MM_size Or MM_offset = -1) Then If ((MM_rsCount Mod MM_size) > 0) Then MM_offset = MM_rsCount - (MM_rsCount Mod MM_size) Else MM_offset = MM_rsCount - MM_size End If End If End If ' reset the cursor to the beginning If (MM_rs.CursorType > 0) Then MM_rs.MoveFirst Else MM_rs.Requery End If ' move the cursor to the selected record MM_index = 0 While (Not MM_rs.EOF And MM_index < MM_offset) MM_rs.MoveNext MM_index = MM_index + 1 WendEnd If%><%' *** Move To Record: update recordset stats' set the first and last displayed recordRsBairro_first = MM_offset + 1RsBairro_last = MM_offset + MM_sizeIf (MM_rsCount <> -1) Then If (RsBairro_first > MM_rsCount) Then RsBairro_first = MM_rsCount End If If (RsBairro_last > MM_rsCount) Then RsBairro_last = MM_rsCount End IfEnd If' set the boolean used by hide region to check if we are on the last recordMM_atTotal = (MM_rsCount <> -1 And MM_offset + MM_size >= MM_rsCount)%><%' *** Go To Record and Move To Record: create strings for maintaining URL and Form parametersDim MM_keepNoneDim MM_keepURLDim MM_keepFormDim MM_keepBothDim MM_removeListDim MM_itemDim MM_nextItem' create the list of parameters which should not be maintainedMM_removeList = "&index="If (MM_paramName <> "") Then MM_removeList = MM_removeList & "&" & MM_paramName & "="End IfMM_keepURL=""MM_keepForm=""MM_keepBoth=""MM_keepNone=""' add the URL parameters to the MM_keepURL stringFor Each MM_item In Request.QueryString MM_nextItem = "&" & MM_item & "=" If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then MM_keepURL = MM_keepURL & MM_nextItem & Server.URLencode(Request.QueryString(MM_item)) End IfNext' add the Form variables to the MM_keepForm stringFor Each MM_item In Request.Form MM_nextItem = "&" & MM_item & "=" If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then MM_keepForm = MM_keepForm & MM_nextItem & Server.URLencode(Request.Form(MM_item)) End IfNext' create the Form + URL string and remove the intial '&' from each of the stringsMM_keepBoth = MM_keepURL & MM_keepFormIf (MM_keepBoth <> "") Then MM_keepBoth = Right(MM_keepBoth, Len(MM_keepBoth) - 1)End IfIf (MM_keepURL <> "") Then MM_keepURL = Right(MM_keepURL, Len(MM_keepURL) - 1)End IfIf (MM_keepForm <> "") Then MM_keepForm = Right(MM_keepForm, Len(MM_keepForm) - 1)End If' a utility function used for adding additional parameters to these stringsFunction MM_joinChar(firstItem) If (firstItem <> "") Then MM_joinChar = "&" Else MM_joinChar = "" End IfEnd Function%><%' *** Move To Record: set the strings for the first, last, next, and previous linksDim MM_keepMoveDim MM_moveParamDim MM_moveFirstDim MM_moveLastDim MM_moveNextDim MM_movePrevDim MM_urlStrDim MM_paramListDim MM_paramIndexDim MM_nextParamMM_keepMove = MM_keepBothMM_moveParam = "index"' if the page has a repeated region, remove 'offset' from the maintained parametersIf (MM_size > 1) Then MM_moveParam = "offset" If (MM_keepMove <> "") Then MM_paramList = Split(MM_keepMove, "&") MM_keepMove = "" For MM_paramIndex = 0 To UBound(MM_paramList) MM_nextParam = Left(MM_paramList(MM_paramIndex), InStr(MM_paramList(MM_paramIndex),"=") - 1) If (StrComp(MM_nextParam,MM_moveParam,1) <> 0) Then MM_keepMove = MM_keepMove & "&" & MM_paramList(MM_paramIndex) End If Next If (MM_keepMove <> "") Then MM_keepMove = Right(MM_keepMove, Len(MM_keepMove) - 1) End If End IfEnd If' set the strings for the move to linksIf (MM_keepMove <> "") Then MM_keepMove = MM_keepMove & "&"End IfMM_urlStr = Request.ServerVariables("URL") & "?" & MM_keepMove & MM_moveParam & "="MM_moveFirst = MM_urlStr & "0"MM_moveLast = MM_urlStr & "-1"MM_moveNext = MM_urlStr & CStr(MM_offset + MM_size)If (MM_offset - MM_size < 0) Then MM_movePrev = MM_urlStr & "0"Else MM_movePrev = MM_urlStr & CStr(MM_offset - MM_size)End If%> <table width="100%" border="0"> <tr> <td> <table align="center" border="0"> <tr> <td align="default" width="100%"> <div align="center"><font face="Arial, Helvetica, sans-serif"><strong>categoria </strong></font></div></td> </tr> <% While ((Repeat1__numRows <> 0) AND (NOT RsBairro.EOF)) %> <tr> <td align="default" width="100%"> <a href="view.asp?<%= MM_keepBoth & MM_joinChar(MM_keepBoth) & "categoria=" & RsBairro.Fields.Item("categoria").Value %>"><%=(RsBairro.Fields.Item("categoria").Value)%></a> </td> </tr> <% Repeat1__index=Repeat1__index+1 Repeat1__numRows=Repeat1__numRows-1 RsBairro.MoveNext()Wend%> </table> <br> <table border="0" width="50%" align="center"> <tr> <td width="23%" align="center"> <% If MM_offset <> 0 Then %> <a href="<%=MM_moveFirst%>">Primeiro</a> <% End If ' end MM_offset <> 0 %> </td> <td width="31%" align="center"> <% If MM_offset <> 0 Then %> <a href="<%=MM_movePrev%>">Retornar</a> <% End If ' end MM_offset <> 0 %> </td> <td width="23%" align="center"> <% If Not MM_atTotal Then %> <a href="<%=MM_moveNext%>">Avançar</a> <% End If ' end Not MM_atTotal %> </td> <td width="23%" align="center"> <% If Not MM_atTotal Then %> <a href="<%=MM_moveLast%>">Último</a> <% End If ' end Not MM_atTotal %> </td> </tr> </table> <div align="center">Registros <%=(RsBairro_first)%> a <%=(RsBairro_last)%> de <%=(RsBairro_total)%> </div></td> </tr></table><%RsBairro.Close()Set RsBairro = Nothing%><--------------------FIM DE CÓDIGO---------------------->Pagina que deveria exibir os registros da tabela CadastroServBairro.<---------INICIO DO CÓDIGO---------><%@LANGUAGE="VBSCRIPT"%><!--#include file="../Connections/conBairro.asp" --><%Dim RsBairro__MMColParamRsBairro__MMColParam = "1"If (Request.QueryString("categoria") <> "") Then RsBairro__MMColParam = Request.QueryString("categoria")End If%><%Dim RsBairroDim RsBairro_numRowsSet RsBairro = Server.CreateObject("ADODB.Recordset")RsBairro.ActiveConnection = MM_conBairro_STRINGRsBairro.Source = "SELECT * FROM CategoriaServicos WHERE categoria = '" + Replace(RsBairro__MMColParam, "'", "''") + "' ORDER BY categoria ASC"RsBairro.CursorType = 0RsBairro.CursorLocation = 2RsBairro.LockType = 3RsBairro.Open()RsBairro_numRows = 0%> <table align="center" border="1"> <tr> <td align="default" width="50%">categoria</td> <td align="default" width="50%"><%=(RsBairro.Fields.Item("categoria").Value)%></td> </tr> </table> <%RsBairro.Close()Set RsBairro = Nothing%><--------------------FIM DE CÓDIGO---------------------->è claro que aqui nós não temos a abertura da tabela CadastroServBairro pq eu não consigo fazer a abertura delas,a credito que esta ai o problema.Os nomes das paginas são:Pagina que exibe as Categorias: detalhes.aspPagina que exibe os detalhes das Categorias: view.aspNo caso aqui eu usei o dreanweaver para fazer mais rápido, mas eu ja tentei fazer digitanto todo o código também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara pelo que detectei nesta segunda pagina você deveria selecionar os registros da tabela que tem os serviços e os bairros e não denovo da tabela de serviços

 

troca esta linha

 

RsBairro.Source = "SELECT * FROM CategoriaServicos WHERE categoria = '" + Replace(RsBairro__MMColParam, "'", "''") + "'

 

por esta

 

RsBairro.Source = "SELECT * FROM CadastroServBairro WHERE categoria = '" + Replace(RsBairro__MMColParam, "'", "''") + "'

 

só verifica se a coluna que tem as categorias também tem o nome de categoria

 

outra coisa que você deve fazer é criar um loop que nem tinha na outra pagina, senão só mostrará um registro mesmo monta sua tabela assim

 

<table align="center" border="1">

<tr>

<td align="default" width="50%">categoria</td>

<td align="default" width="50%">bairro</td>

</tr>

<%

WHILE NOT RsBairro.EOF

%>

<tr>

<td align="default" width="50%">"><%=(RsBairro.Fields.Item("categoria").Value)%></td>

<td align="default" width="50%"><%=(RsBairro.Fields.Item("bairro").Value)%></td>

</tr>

<%

RsBairro.MOVENEXT

WEND

%>

</table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito Obrigado.Fera, deu certo, ja tava quebrando a cabeça nisto a mais de uma semana, agora vou continuar meus estudos em asp, isto serviu para que eu visse que ainda tenho muito para aprender.Valeu mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qualquer duvida nova em seu aprendizado posta ai...

 

 

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

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.