[asp] sql query output probleem

Pagina: 1
Acties:

  • The-Source
  • Registratie: Augustus 2001
  • Laatst online: 07:50
Mijn probleem is als volgt. Er staan in de database per onderdeel (m1, m2 , etc) cijfers. Elk onderdeel kan 2 cijfers bevatten (m1_1, m1_2, etc).
Het is mogelijk dat niet elk veld een cijfer bevat.
Ik wil dus als er in een onderdeel 2 cijfers zitten dat er hier dan het gemiddelde wordt getoond. Dat lukt wel maar allenig bij het 1e onderdeel na het 1e onderdeel komt het 1e cijfer van onderdeel 2 te staan met daarna een foutmelding
[foutmelding]
ADODB.Recordset fout '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

/test/test.asp, regel 32
[/foutmelding]

In de code hieronder zit een fout (of het is misschien niet mogelijk)
ik heb er wat regel nummer bijgevoegd om het wat makkelijker te maken
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<body>  <% ' regel 20  %>
de cijfers van <%=rs("achternaam")%> zijn:<p>

<% 
dim i
dim j
for i = 1 to 4 step 1
  for j = 1 to 2 step 1
    Response.Write "cijfer m" & i & "_" & j & "=<input type=""text"" size=""3"" value=""" & rs("m" & i & "_" & j) & """>"
    if (i < 2) and (j < 2) then 
     response.write "<!-- -->" ' regel 30
    else 
     if (CInt(rs("m" & i & "_" & j)) >0) and (CInt(rs("m" & i & "_" & j - 1)) >0) then
       dim k   
       dim l
       k = CInt(rs("m" & i & "_" & j))
       l=  CInt(rs("m" & i & "_" & j - 1))
%>
       gemid: <input type="text" size="3" value="<% response.write (k+l)/2 %>"><p>

<%     else response.write "<font size=2>Er is geen gemiddelde beschikbaaar</font><p>"
     end if
    end if
next
next

adoDataConn.Close   ' regel 45

ik heb ook nog een screengrap gemaakt van de uitkomst.
hier onder zie je de screengrap
Afbeeldingslocatie: http://www.ti-zone.com/~klaasbram/fout.jpg

alvast bedank

Taal fouten inbegrepen ;)


  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 16-09 08:48
De foutmelding geeft aan dat het item dus niet bestaat... Dus ergens in de benaming zit het fout... Ik weet niet of als er geen data is voor m2_2 of ie het dan ook opslaat in je db, maar zoniet zit daar het probleem...

  • The-Source
  • Registratie: Augustus 2001
  • Laatst online: 07:50
Op dinsdag 16 oktober 2001 10:52 schreef Banpei het volgende:
De foutmelding geeft aan dat het item dus niet bestaat... Dus ergens in de benaming zit het fout... Ik weet niet of als er geen data is voor m2_2 of ie het dan ook opslaat in je db, maar zoniet zit daar het probleem...
in de database het tot nu toe (omdat het een test versie is) maar tot m4_2 maar gaat waarschijnlijk tot m16_2
waarneer ik de if statements van het gemiddelde weglaat dan komen wel alle cijfers er te staan. (elk veld bevat al een 0)

Taal fouten inbegrepen ;)


  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 16-09 08:48
code:
1
if (i < 2) and (j < 2) then

Hier zit je probleem... Als i = 2 en j = 1 dan gaat ie alsnog naar de else... Dus je moet een OR gebruiken...

  • The-Source
  • Registratie: Augustus 2001
  • Laatst online: 07:50
ik heb het probleem gevonden. ik keek nog eens een keer naar de code en toen zag ik ineens het probleem.
het kwam doordat de code de kolom m2_0 probeerde aan tevragen (en die bestaat niet)
code:
1
 if (CInt(rs("m" & i & "_" & j)) >0) and (CInt(rs("m" & i & "_" & j - 1)) >0)

zoals je in het laatste stukje van de code ziet

Taal fouten inbegrepen ;)


  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 16-09 08:48
Oftewel: zie boven waarom ie m2_0 probeert aan te spreken... :P

  • The-Source
  • Registratie: Augustus 2001
  • Laatst online: 07:50
voor de gene die dit interresant vinden.
hier is de gewijzigde code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if (i < 2) and (j < 2) then 
     response.write "<!-- -->" ' regel 30
    else 
    if (j >1) then
     if (CInt(rs("m" & i & "_" & j)) >0) and (CInt(rs("m" & i & "_" & j - 1)) >0) then
       dim k   
       dim l
       k = CInt(rs("m" & i & "_" & j))
       l=  CInt(rs("m" & i & "_" & j - 1))
%>
       gemid: <input type="text" size="3" value="<% response.write (k+l)/2 %>"><p>

<%     else response.write "<font size=2>Er is geen gemiddelde beschikbaaar</font><p>"
     end if
    end if
    end if
next
next

adoDataConn.Close   ' regel 45

Taal fouten inbegrepen ;)


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 22:25

Janoz

Moderator Devschuur®

!litemod

Mag ik je er trouwens wel op wijzen dat dit niet zo'n best datamodel is?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • The-Source
  • Registratie: Augustus 2001
  • Laatst online: 07:50
Op dinsdag 16 oktober 2001 11:15 schreef Janoz het volgende:
Mag ik je er trouwens wel op wijzen dat dit niet zo'n best datamodel is?
dat mag best hoor als je dan gelijk ff een betere aanbied >:)
misschien kun je dan gelijk ff vertellen hoe het zit met een query die je in acces gemaakt hebt of/ hoe je deze kunt aanroepen.

Taal fouten inbegrepen ;)


  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 16-09 08:48
Mag ik je er trouwens wel op wijzen dat dit niet zo'n best datamodel is?
Ondanks dat zal het waarschijnlijk erg effectief zijn in het geval van Klaasbram... ;)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 22:25

Janoz

Moderator Devschuur®

!litemod

Was net ff met een practicum bezig (fourier getransformeerde beelden), maar zal nu ff neerzetten wat in mijn ogen een beter db model is:

Ik neem ff een paar dingen aan:
- een vak bestaat uit meerdere cijfers met elk een ander gewicht
- er zijn meerdere vakken
- cijfers van meerdere leerlingen moeten worden bijgehouden
- een vak wordt maar 1 keer gevolgd

------------- DB beschrijving -------

leerlingen
ID
persoonsgegevens (meerdere velden)

Vakken
ID
vaknaam
andere gegevens

Onderdelen (een vak bestaat uit meerdere onderdelen, voor elk is een cijfer te halen, en alle cijfers bepalen het eindcijfer)
ID
vakID
gewicht

Cijfers
ID
onderdeelID
leerlingID
waardering

--------------------------------------

NB :
1-Als vakken meerdere keren gevolgd kunnen worden (herkansing zeg maar) dan kan het beste een soort volgnummer gemaakt worden zodat de behaalde cijfers van de eerste keer dat het vak gevolgd wordt niet in de war komt met de cijfers die gehaald worden waneer heet vak voor de tweede keer gevolgd wordt.2-Als het slechts over 1 leerling gaat, kan alles met leerlingen weggehaald worden (tabel en leerlingID veld), maar dat maakt dit design natuurlijk minder schaalbaar
3-De queries mag je zelf bedenken, maar zijn niet zo heel moeilijk (IMHO).

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Morpheus_at_work
  • Registratie: December 2000
  • Laatst online: 16-09 20:18
probeer ook is wat betere naampjes te kiezen voor je database velden , het is misschien wel makkelijk om a , b, c, te nemen , maar je maakt het voor je zelf lastig op den duur

Canon R6 MARK III, 35mm 1.4 VCM, 50mm 1.4 VCM , 85mm 1.4 VCM , 17-35mm 1.8, 28-70 1.8 , 24-105 1.8 70-200 f2.8

Pagina: 1