Toon posts:

[Access/ASP] Controleren of tabel na volgende record EOF is?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste mensen, het zit zo:

Ik ben bezig met de opmaak van een (HTML) tabel. Ik wil -tussen- de records in die tabel een scheiding te maken dmv een streepje.
Dat streepje komt dan bij elke record onderaan de cell te staan. Dit werkt allemaal mooi. Met een probleem, bij de laatste record, wordt er onderaan óók een lijntje gezet. Hierdoor krijg ik een dubbele lijn onderaan = niet mooi.

Daarom wil ik kunnen controleren bij elke record ofdat ná de volgende record de tabel aan het einde is (EOF).

Ik had zoiets al geknutseld:
ASP:
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
28
29
30
31
32
33
34
35
36
37
<style>
.middel
{
border-left-width: 1; 
border-right-width: 1; 
border-top-width: 1; 
border-bottom: 1px dotted #C0C0C0"
}
</style>



<%
  do while not optdb.EOF
                  
 optdb.movenext
                    
    if optdb.EOF then
        clas = "blanco"
        optdb.MovePrevious
    else
        clas = "middel"
        optdb.MovePrevious
    end if
%>

<tr>
  <td class="<%=clas%>" width="217">  <%=optdb("naam")%>     </td>
  <td class="<%=clas%>" width="98">   <%=optdb("Datum")%>    </td>
  <td class="<%=clas%>" width="105">  <%=optdb("username")%> </td>
  <td class="<%=clas%>" width="62">   <%=optdb("aantal")%>   </td>
</tr>

<%
  optdb.movenext
  loop
%>

Ik krijg dan de volgende fout:
code:
1
2
3
4
ADODB.Recordset error '800a0c93' 
Operation is not allowed in this context. 

/blaat.asp, line 270
Lijn 270 is waar de regel "optdb.MovePrevious" staat.

Weet iemand een manier om deze fout op te lossen, of om het helemaal anders te doen?

-alvast bedankt!

[ Voor 60% gewijzigd door Verwijderd op 30-07-2003 14:50 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Als ik me goed herinner zit er een RecordCount property bij een recordset. Tellertje kan je vervolgens laten meelopen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
gorgi_19 schreef op 30 July 2003 @ 14:50:
Als ik me goed herinner zit er een RecordCount property bij een recordset. Tellertje kan je vervolgens laten meelopen.
Je bent geniaal! Even proberen!

Edit, voor de mensen die willen weten hoe ik het nu opgelost heb, dankzij de ingeving van gorgi_19:
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
..........
          
       aantal = optiedb.recordcount
        i = 1

           do while not optiedb.EOF

        i = i + 1
                  
        if i <> aantal then clas="middel" else clas = "blanco"

..........

vergeet deze niet voordat je de database opend:
ASP:
1
2
opt.CursorType = 1
opt.LockType = 1

[ Voor 53% gewijzigd door Verwijderd op 30-07-2003 15:02 ]


Verwijderd

Als je de velden die je wil uitlezen eerst in lokale variabelen zet, kan je daarna een movenext doen. Als ie dan EOF is pas je de classnaam aan.

Daarna schrijf je alles uit en ga je door in de loop of eruit.

Zo heb je niet die nare moveprevious.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Over je foutmelding die je er later bij geedit hebt:

Als je een recordset forward readonly opent (oid), kan je niet teruglezen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 10:45

mulder

ik spuug op het trottoir

Misschien is een HTML oplossing wat makkelijker, je kunt met styles zorgen dat de 'footer' van je lijst geen lijntje aan de bovenkant heeft.

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
Don Facundo schreef op 30 July 2003 @ 15:03:
Misschien is een HTML oplossing wat makkelijker, je kunt met styles zorgen dat de 'footer' van je lijst geen lijntje aan de bovenkant heeft.
Dan loop je weer het risico dat mozilla's etc. het weer niet aan kunnen. Als het server side kan, doe het dan serverside heb ik altijd geleerd :)

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 10:45

mulder

ik spuug op het trottoir

Uiteindelijk is het toch HTML wat je wilt hebben?

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
Don Facundo schreef op 30 July 2003 @ 15:26:
Uiteindelijk is het toch HTML wat je wilt hebben?
Ja, tuurlijk, maar naja, la ma :)

Verwijderd

Topicstarter
Don Facundo schreef op 30 July 2003 @ 15:26:
Uiteindelijk is het toch HTML wat je wilt hebben?
Hoe zou jij dit met HTML / CSS doen?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 10:45

mulder

ik spuug op het trottoir

een header heeft een complete border
een row heeft links-onder-rechts een border
een footer heeft links-onder-rechts een border

klaar

oogjes open, snaveltjes dicht


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 21-08 18:33
gorgi_19 schreef op 30 July 2003 @ 14:50:
Als ik me goed herinner zit er een RecordCount property bij een recordset. Tellertje kan je vervolgens laten meelopen.
Recordcount zou ik niet gebruiken. Deze is niet betrouwbaar, zoals in verschillende topics hier al aan de orde kwam.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 10:45

mulder

ik spuug op het trottoir

RecordCount is alleen direct beschikbaar in een ForwardOnly recordset, bij anderen zul je eerst een MoveLast moeten doen.

oogjes open, snaveltjes dicht


  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 07-07 11:51
Uiteraard hulde voor de oplossing van gorgi_19, maar als je geen gebruik kunt of wilt maken van recordcount, waarom dan niet testen of het record de éérste is en als het niet de eerste is, er een streep vóór zetten?

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


  • BasSpruit
  • Registratie: September 2002
  • Laatst online: 09-04-2022
is het niet makkelijker om hiervoor de getrows() te gebruiken? heb je meteen het aantal records, en kan je heel goed kijken of het volgende record de laatste is of niet.

Verwijderd

Heb je niet ook het probleem dat je altijd het 1e record mist? Je begint namelijk al gelijk met een movenext.

Je kan de movenext en test op EOF aan het einde van de loop zetten.
Iets als:

code:
1
2
3
4
5
6
Do
    <doe iets met record>

    optdb.MoveNext

Loop While Not optdb.EOF


Waarschijnlijk zal je er een testje voor moeten zetten of de recordset eigenlijk wel records bevat. Jouw loop was daar tegen bestand, deze niet.

[ Voor 22% gewijzigd door Verwijderd op 31-07-2003 12:58 ]

Pagina: 1