Vragen overzicht per categorie

  • Onderwerp starter Onderwerp starter albi
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

albi

Gebruiker
Lid geworden
15 mei 2007
Berichten
9
Beste,

Ik heb een vragen systeem. De vragen worden uit een Access db gehaald. Via het web vraag ik de vragen mbv van ASP pagina's. Bij de vragen, die per categorie zijn verdeeld, kan ik ook antwoorden geven. Dat gaat allemaal prima.

Ik wil nu een afdrukmogelijkheid maken, maar dat lukt mij niet zo goed.
Ik heb het nu voor elkaar gekregen om het als volgt te laten tonen, maar dit wil ik niet:
Code:
[B]
Catergorie 1[/B]
vraag 1
antwoord 1
opmerkingen 1
[B]Catergorie 1[/B]
vraag 2
antwoord 2
opmerkingen 2
[B]Catergorie 2[/B]
vraag 3
antwoord 3
opmerkingen 3
[B]Catergorie 2[/B]
vraag 4
antwoord 4
opmerkingen 4

De indeling van de pagina wil ik uiteindelijk als volgt indelen:
Code:
[B]Catergorie 1[/B]
vraag 1
antwoord 1
opmerkingen 1
vraag 2
antwoord 2
opmerkingen 2
etc
[B]Categorie 2[/B]
vraag 1
antwoord 1
opmerkingen 1
vraag 2
antwoord 2
opmerkingen 2
etc

Voor een beter overzicht hoe het nu eruit ziet, heb ik een afbeelding hierbij in de bijlage gedaan.

De code van de ASP pagina die het overzicht moet tonen, heb ik hieronder gezet.

Code:
<%@ Language=VBScript %>
<% Option Explicit %>

<%
' Teksten uit de database
Dim objRSTeksten

Set objRSTeksten = Server.CreateObject("ADODB.Recordset")

function HaalTekstOp( byval nTekstID )
	Dim strSQL
		
	strSQL = "SELECT Tkst_inhoud FROM Teksten WHERE Tkst_id = " & CStr( nTekstID )

	objRSTeksten.Open strSQL, Application("strConnectionVrEv4")
		
	if objRSTeksten.BOF = true and objRSTeksten.EOF = true then
		HaalTekstOp = "<B>[Tekst met ID " & CStr( nTekstID ) & " niet gevonden]</B>"
	else
		HaalTekstOp = objRSTeksten("Tkst_inhoud")
	end if
		
	objRSTeksten.Close	
end function
%>

<HTML>
<HEAD>
	<title>Rapportage vragen en antwoorden</title>
	<LINK REL=STYLESHEET HREF="../main.css" TYPE="text/css">
	<base target="_self">
</head>
<BODY onLoad="window.print()">

<%
	Dim objRS
	Dim strSQL
	Set objRS = Server.CreateObject("ADODB.Recordset")
%>


<TABLE BORDER="0" CELLSPACING="0" width=670 style="border-left-width: 0px; border-right-width: 0px">
	<TR>
		<BR><TD colspan="2"><H3><%=HaalTekstOp(11)%></H3></TD>
	</TR>
    <tr  valign="top">

<%
	set objRS = Server.CreateObject( "ADODB.Recordset" )
	strSQL = "SELECT * FROM qr_antwoorden ORDER BY Ctgr_omschrijving"
	objRS.Open strSQL,Application("strConnectionVrEv4"),3,3
	If Not objRS.EOF Then
		objRS.MoveFirst
		do while not objRS.EOF
%>
			<td>Categorie</td>
<TD colspan="2" bgcolor="#AFDADA"><STRONG>
<%
		Response.Write objRS.Fields("Ctgr_omschrijving")
		%>
		</STRONG></TD>
	</TR>
	    <TR style="cel3"  valign="top">
    	<TD width=102>Vraag</TD> 
    	<TD bgcolor="#AFDADA" width=564>
		<%
		Response.Write objRS.Fields("Vrgn_oms")
		%>		
		</TD>
	</TR>		
    <TR style="cel3"  valign="top"><td>Antwoord</td>
    	<TD width=525 bgcolor="#E1F1F1" style="border-style: none; border-width: medium" colspan="2" >
		<%Response.Write objRS.Fields("Antw_antwoord")%>
		</TD>
	</TR>
   <TR style="cel3"  valign="top"><td>Opmerkingen</td>
    	<TD width=525 bgcolor="#E1F1F1" style="border-style: none; border-width: medium" colspan="2" >
		<%Response.Write objRS.Fields("Antw_opmerking")%>
		</TD>
	</TR>

	<tr><td height="10" colspan="2"></td>
	</tr>	
	<TR><TD style="border-top-style: none; border-top-width: medium" colspan="2">
		</TD></TR>
	<%	
		objRS.MoveNext
   Loop
	Else
	%>
	<TD colspan="2"><STRONG>Geen vragen!</STRONG></TD></TR>
<%
	End If
objRS.Close
Set objRS = Nothing
%>

<script type="text/javascript">
_uacct = "UA-724001-1";
urchinTracker();
</script>
</BODY>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
</script>
	<TR>
		<BR><TD colspan="2"><%=HaalTekstOp(12)%></TD>
	</TR>
</table>


Mijn eerste vraag:
Wat moet ik aan de code aanpassen zodat ik de categorie eenmaal kan laten tonen? Zoals mijn voorbeeld hierboven waar je per categorie de vragen ziet.
Voor de volledigheid: Ik wil alle categorien met de betreffende vragen/antwoorden op een pagina tonen. En niet per pagina een categorie.

Mijn tweede vraag:
Ik zou graag de vragen willen autonummeren. In de tabel waar de vragen zitten heb ik al een ID veld, maar die wil ik niet gebruiken (dat loopt tot 10duizenden). Per enquete vink ik de vragen die ik wil gebruiken, en die nummers (bv 5321, 7546..) hoeft de gebruiker niet te zien.
De vragen wil ik dan ook per categrie weer opnieuw willen laten nummeren, te beginnen bij 1 zoals op onderstaande voorbeeld:
Code:
[B]Catergorie 1[/B]
vraag 1
vraag 2
etc
[B]Categorie 2[/B]
vraag 1
vraag 2
etc

Wie o wie begrijpt mijn vraag en mij hierbij helpen?

Excuses voor de lange bericht. En bijvoorbaat dank voor de reacties/hulp.


Gr,
Albi
 

Bijlagen

  • vragen.jpg
    vragen.jpg
    30,6 KB · Weergaven: 26
Je moet hier een Loop gebruiken, ofwel een for next of een Do While loop, waar je in eerste instantie door je categorieen loopt en per categorie de 'dochters' uitleest.
Ik weet niet hoe je tabel uit MS Access eruit ziet, maar als alles in één tabel staat heb je wel een uitdaging lijkt me.
Geef de structuur maar eens door, dan kan ik misschien wat dummy-code geven.

Rob
 
Dag Rob,
Bedankt voor je reactie!

Ik ken 'Do While loop' niet (zo goed).

Nee, niet alles staat in een tabel. :D Per onderdeel heb ik een andere tabel. Hieronder een overzicht van de tabellen. Daaronder zit ook een query waaruit ik de gegevens uithaal in ASP.

Tabel Antwoorden:
Antw_id
Antw_dlnmrs_id
Antw_vrgn_categorie
Antw_vrgn_id
Antw_antwoord
Antw_opmerking

Tabel Categorie:
Ctgr_id
Ctgr_omschrijving
Ctgr_linktekst

Tabel Vragen:
Vrgn_id
Vrgn_categorie
Vrgn_nummer
Vrgn_soort
Vrgn_oms
Vrgn_keuze
Vrgn_minant
Vrgn_maxant
Vrgn_helptekst
Vrgn_opm
Vrgn_goede_antwoord
Vrgn_score
Vgrn_actief

Query "qr_antwoorden":

SELECT Antwoord.Antw_id, Antwoord.Antw_dlnmrs_id, Antwoord.Antw_vrgn_categorie, Antwoord.Antw_vrgn_id, Antwoord.Antw_antwoord, Antwoord.Antw_opmerking, Vragen.Vrgn_oms, Categorie.Ctgr_omschrijving, Deelnemers.Dlnmrs_bedrijfsnaam, Deelnemers.Dlnmrs_id, Vragen.Vrgn_id
FROM ((Antwoord INNER JOIN Vragen ON Antwoord.Antw_vrgn_id = Vragen.Vrgn_id) INNER JOIN Categorie ON Antwoord.Antw_vrgn_categorie = Categorie.Ctgr_id) INNER JOIN Deelnemers ON Antwoord.Antw_dlnmrs_id = Deelnemers.Dlnmrs_id;
Heb je hier wat aan?

Albi
 
Scheelt het als je in de volgende regel een extra sortering loslaat:

strSQL = "SELECT * FROM qr_antwoorden ORDER BY Ctgr_omschrijving"

wordt dan

strSQL = "SELECT * FROM qr_antwoorden ORDER BY Ctgr_omschrijving, Antwoord.Antw_vrgn_id"

Rob
 
Dat heb ik gedaan, nu wordt er gesorteerd op Categorie en Antwoord.
Maar ik zie de categorieën nog steeds bij iedere vraag voorkomen voorbijkomen.

Heb je misschien nog een oplossing voor mijn tweede vraag?

Albi
 
Hmmm, ik kan het nu even niet reproduceren, dus ik moet afgaan op wat jij me vertelt. Werkt het nou niet of wel met die sortering?

Over dat nummeren...
Misschien kun je twee vliegen in een klap vangen, maar dan kun je de query die jij gebruikt niet gebruiken.

Als je met een loop je door je categorieen wandelt, dan kun je per categorie de vragen ophalen, en daarbij de bijbehorende antwoorden en opmerkingen
iets als
1 haal eerst alle categorieen op
2 loop door alle categorieen en lees per regel de vraag-id uit
3 haal de vraag op en haal daarvoor ook het antwoord en de opmerking op
afdrukken op het scherm met een tellerwaarde ervoor
ga naar de volgende vraagid voor deze categorie
ga naar de volgende categorie als je alle vragen gehad hebt.


Rob
 
Werkt het nou niet of wel met die sortering?
De sortering werkt wel, maar ik zie de categorieën nog steeds bij iedere vraag voorbij komen. Ik wil juist de categorie eenmaal laten tonen met de vragen daaronder.

Ik begrijp wat je beschrijft met 1 2 3, en ik denk dat dat alles oplost, maar om dat in werkbare code om te gaan zetten...heb ik te weinig kennis over. :(

Heb je een voorbeeldcode?

Albi
 
Heej, beetje vreemd. Ik had een heel antwoord zitten typen, maar zie het niet terug....ik heb nu ook geen tijd om dat te doen, dus ik kom daar nog wel op terug.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan