webForumDet fria alternativet

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

12 svar · 443 visningar · startad av Dashi

DashiMedlem sedan jan. 2005296 inlägg
#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%>
TainEvilMedlem 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.

DashiMedlem 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?

TainEvilMedlem 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å...

SannyWMedlem 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?

DashiMedlem 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...

TainEvilMedlem 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.

DashiMedlem 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å :)

TainEvilMedlem sedan aug. 2002106 inlägg
#9

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

DashiMedlem 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

SannyWMedlem 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>
DashiMedlem 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>
DashiMedlem 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>
139 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)