webForumDet fria alternativet

distinct funkar inte som det ska och den listar inte ut all info från databas

ASP

12 svar · 445 visningar · startad av Dashi

Medlem sedan jan. 2005296 inlägg
Frågan#1

Det vill inte funka riktigt som det ska, distinct funkar inte på selecten grupp under den bara skriver ut all info, och selecten undergrupp och tredjegrupp får inget info alls, visas bara välj undergrupp och respektive välj tredjegrupp. Får inget felmeddelande. Hittar ni något fel?

Mvh //Darek

<% If Request.Querystring("produkter") = "" Then %>

<% visa = "SELECT DISTINCT grupp, undergrupp, tredjegrupp FROM produkter"
RS.Open visa, conn, adOpenStatic, adLockOptimistic %>

<table width="90%" border="0" cellspacing="0" cellpadding="0">
      <tr> 
        <td>
            <SELECT name="vgrupp">
              <OPTION selected value="item">Välj grupp!</OPTION>
              <%Do Until rs.EOF%>
              <OPTION value="<%=RS("grupp")%>"><%=RS("grupp")%></OPTION>
              <% rs.MoveNext
	  Loop %>
            </select>
            <select name="vundergrupp">
              <option selected value="item">Välj undergrupp!</option>
              <%Do Until rs.EOF%>
              <option value="<%=RS("undergrupp")%>"><%=RS("undergrupp")%></option>
              <% rs.MoveNext
	  Loop %>
            </select>
            <select name="vtredjegrupp">
              <option selected value="item">Välj tredjegrupp!</option>
              <%Do Until rs.EOF%>
              <option value="<%=RS("tredjegrupp")%>"><%=RS("tredjegrupp")%></option>
              <% rs.MoveNext
	  Loop
	  RS.Close %>
            </select>
        </td>
        <td>&nbsp;</td>
      </tr>
</table>
<%End If%>
Medlem sedan aug. 2002106 inlägg
#2

Att du inte får någon info alls i två av dina select-boxar beror på att du i din första box loopar igenom hela recordsetet till slutet. Alltså är RS.EOF = True när du kommer till nästa.

Medlem sedan jan. 2005296 inlägg
#3

TainEvil skrev:

Att du inte får någon info alls i två av dina select-boxar beror på att du i din första box loopar igenom hela recordsetet till slutet. Alltså är RS.EOF = True när du kommer till nästa.

oki då får jag stänga rs och sen köra en ny sats på den andra och göra likadant med den tredje?

Medlem sedan aug. 2002106 inlägg
#4

Antingen det, eller så fylla samtliga boxar innan du stegar fram ditt recordset, men det beror givetvis på vilket resultat du vill uppnå...

Medlem sedan jan. 2003438 inlägg
#5

Skulle man få se lite information om din databas struktur, undrar lite varför du har tre olika kolumner grupp, undergrupp, tredjegrupp?

Medlem sedan jan. 2005296 inlägg
#6

SannyW skrev:

Skulle man få se lite information om din databas struktur, undrar lite varför du har tre olika kolumner grupp, undergrupp, tredjegrupp?

produktmenyn, och jag sitter och bygger på admin delen nu.. men det funkar ändå inte som de ska, för jag vill att den ska visa undergruppen where markerade gruppen är när man väljer en o.s.v...

Medlem sedan aug. 2002106 inlägg
#7

Då kan du nog bara fylla den första med grupp och sedan bygga undergrupp dynamiskt utifrån vald grupp med en egen select osv.

Sen vet jag inte om du behöver köra med DISTINCT, går säkert lika bra med en GROUP BY.

Medlem sedan jan. 2005296 inlägg
#8

TainEvil skrev:

Då kan du nog bara fylla den första med grupp och sedan bygga undergrupp dynamiskt utifrån vald grupp med en egen select osv.

Sen vet jag inte om du behöver köra med DISTINCT, går säkert lika bra med en GROUP BY.

jo men allt måste läsas från databasen eftersom kunden ska kunna ändra menyn själv och menyn läses från databasen osså :)

Medlem sedan aug. 2002106 inlägg
#9

Så hur ser då strukturen på din databas ut?

Medlem sedan jan. 2005296 inlägg
#10

grupp | undergrupp | tredjegrupp | artikelnr | produktnamn | pris

Data | processor | AMD - socket 775 | 25469 | AMD 2,0 GHZ | 2498
Data | processor | Intel - Socket 478 | 25498 | Intel 3,0 GHZ | 6330

Medlem sedan jan. 2003438 inlägg
#11

Möjligen en av världens längsta lösningar, men dock.

<%
'Declare global variables
Dim connection, rs, strCheck, i

'Open database connection
Sub connOpen
	set connection = server.createobject("adodb.connection")
	connection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../../#bart$ite.mdb")&";"
End Sub

'Close recordset
Sub rsClose
	rs.close : set rs = nothing
End Sub

'Close database connection
Sub connClose
	connection.close : set connection = nothing 
End Sub

'Get datarows
Function GetRows(ByVal strSQL)
Dim arrRecords
	Call connOpen		
	Set rs = connection.Execute(strSQL)
	If Not rs.BOF Or Not rs.EOF Then
		arrRecords = rs.GetRows()
	ELSE
		arrRecords = ""
	End If		
	rsClose : connClose
GetRows = arrRecords 
End Function

Sub Selectgrupp(ByVal strGrupp)
'// Posthantering 
arrRecords = GetRows("SELECT DISTINCT "&strGrupp&"grupp FROM produkter")
 
'// Posthantering 
If IsArray(arrRecords) THEN

        Response.Write "<select name='v"&strGrupp&"grupp' onchange='parent.frames['main'].location  = 'produktervisa.asp?vgrupp="">';'>"

	If Request.Form("v"&strGrupp&"grupp") = "" THEN
        Response.Write "<option selected value='item'>Välj "&strGrupp&"grupp!</option>"
		
	  For i = 0 To Ubound(arrRecords,2)

	  strGrupp = arrRecords(0,i)

	  '// Skriver ut detaljerna om varje id		
	  Response.Write "<option value='"&strGrupp&"grupp'>"&strGrupp&"grupp</option>"

    	  Next
 	Else
	  Response.Write "<option selected value='item'>"&strGrupp&"grupp</option>"
	End if
	Response.Write "</select>"
End If
End Sub
%>
<form>
<table width="90%" border="0" cellspacing="0" cellpadding="0">
      <tr> 
        <td><% Call Selectgrupp("") %></td>
        <td><% Call Selectgrupp("under") %></td>
        <td><% Call Selectgrupp("tredje") %></td>
      </tr>
</table>
</form>
Medlem sedan jan. 2005296 inlägg
#12

Jag har redan fixat att den skriver ut det, men de jag försöker göra nu är att den ska skriva ut gruppen, när jag valt en grupp så ska den lista ut undergrupp och satsen där ska vara where undergrupp och sen när man trycker på en där ska den lista ut tredjegrupp sen när man valt en där ska den gå till sida.asp?grupp=valt&undergrupp=valt&tredjegrupp=valt
Tack ändå

:)

SannyW skrev:

Möjligen en av världens längsta lösningar, men dock.

<%
'Declare global variables
Dim connection, rs, strCheck, i

'Open database connection
Sub connOpen
	set connection = server.createobject("adodb.connection")
	connection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../../test.mdb")&";"
End Sub

'Close recordset
Sub rsClose
	rs.close : set rs = nothing
End Sub

'Close database connection
Sub connClose
	connection.close : set connection = nothing 
End Sub

'Get datarows
Function GetRows(ByVal strSQL)
Dim arrRecords
	Call connOpen		
	Set rs = connection.Execute(strSQL)
	If Not rs.BOF Or Not rs.EOF Then
		arrRecords = rs.GetRows()
	ELSE
		arrRecords = ""
	End If		
	rsClose : connClose
GetRows = arrRecords 
End Function

Sub Selectgrupp

'// Posthantering 
arrRecords = GetRows("SELECT DISTINCT grupp FROM produkter")
 
'// Posthantering 
If IsArray(arrRecords) THEN

        Response.Write "<select name='vgrupp'>"&_
        "<option selected value='item'>Välj grupp!</option>"
	
	For i = 0 To Ubound(arrRecords,2)

	grupp = arrRecords(0,i)

	'// Skriver ut detaljerna om varje id	
	Response.Write "<option value='"&grupp&"'>"&grupp&"</option>"

    	Next

	Response.Write "</select>"
End If
End Sub

Sub Selectundergrupp

'// Posthantering 
arrRecords = GetRows("SELECT DISTINCT undergrupp FROM produkter")
 
'// Posthantering 
If IsArray(arrRecords) THEN

        Response.Write "<select name='vundergrupp'>"&_
        "<option selected value='item'>Välj undergrupp!</option>"
	
	For i = 0 To Ubound(arrRecords,2)

	undergrupp = arrRecords(0,i)

	'// Skriver ut detaljerna om varje id	
	Response.Write "<option value='"&undergrupp&"'>"&undergrupp&"</option>"

    	Next

	Response.Write "</select>"
End If
End Sub

Sub Selecttredjegrupp

'// Posthantering 
arrRecords = GetRows("SELECT DISTINCT tredjegrupp FROM produkter")
 
'// Posthantering 
If IsArray(arrRecords) THEN

        Response.Write "<select name='vtredjegrupp'>"&_
        "<option selected value='item'>Välj tredjegrupp!</option>"
	
	For i = 0 To Ubound(arrRecords,2)

	tredjegrupp = arrRecords(0,i)

	'// Skriver ut detaljerna om varje id		
	Response.Write "<option value='"&tredjegrupp&"'>"&tredjegrupp&"</option>"

    	Next

	Response.Write "</select>"

End If
End Sub
%>
<table width="90%" border="0" cellspacing="0" cellpadding="0">
      <tr> 
        <td><% Call Selectgrupp %></td>
        <td><% Call Selectundergrupp %></td>
        <td><% Call Selecttredjegrupp %></td>
      </tr>
</table>
Medlem sedan jan. 2005296 inlägg
#13

Den vill inte funka :)

<% visa = "SELECT DISTINCT grupp FROM produkter"
RS.Open visa, conn, adOpenStatic, adLockOptimistic %>
<form>
            <SELECT name="vgrupp" onchange="parent.frames['main'].location  = 'produktervisa.asp?vgrupp=<%request.this%>';">
			<%If request.form("vgrupp") = "" Then %>
              <OPTION selected value="item">Välj Grupp!</OPTION>
			  <% Else %>
			  <OPTION selected value="item"><%=vgrupp%></OPTION>
			  <% End If %>
              <%Do Until rs.EOF%>
              <OPTION value="<%=RS("grupp")%>"><%=RS("grupp")%></OPTION>
              <% rs.MoveNext
	  Loop 
	  RS.Close %>
            </select>
			</form>
779 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
643 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
641 ms — ändringar (db)