[ASP] Laatste Record

Pagina: 1
Acties:
  • 105 views sinds 30-01-2008
  • Reageer

  • Chopper_Rob
  • Registratie: November 2001
  • Laatst online: 01-05-2025
Hoe kan ik het laatste record uit een tabel laten zien.

Ik heb het nu met
while not RS.EOF
bla
bla

maar dan laat ie de record na de laatste zien :(

Das iets minder, weet iemand wat ik moet doen.

https://drinkwaterpunten.nl


  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Zoeken in je documentatie rs.movelast

  • Chopper_Rob
  • Registratie: November 2001
  • Laatst online: 01-05-2025
Dit had ik geprobeerd maar dan krijg ik een foutmelding

https://drinkwaterpunten.nl


Verwijderd

rs.movelast en dan rs.moveprevious

error is denk ik omdat ie dus voorbij het einde is, dus moet je er volgens mij 1 terug (moveprevious)

  • Greyfox
  • Registratie: Januari 2001
  • Laatst online: 21:53

Greyfox

MSX rulez

Ik doe altijd:
code:
1
2
3
do while not rs.eof
  rs.movenext
loop

dan laat ie alle records zien.

MSX 2 rulez more


Verwijderd

ORDER BY fldIets DESC ?

En dan 1 record ophalen? Heb je de laatste.
Andere mogelijkheid: in een array dumpen en de laatste uitlezen.
Of de mogelijkheden die hierboven zijn aangegeven.

Verwijderd

Op dinsdag 04 december 2001 16:28 schreef Greyfox het volgende:
Ik doe altijd:
code:
1
2
3
do while not rs.eof
  rs.movenext
loop

dan laat ie alle records zien.
Precies, niet moeilijk doen. Gewoon zo Greyfox zegt en alles komt op scherm. :)
Vergeet vooral de movenext niet.... >:)

Verwijderd

Als uitbreiding op ml1's opmerking:

In de Bijbel stond: "Vele laatsten zullen eersten zijn, en vele eersten zullen laatsten zijn" :+

In SQL krijg je dat voor elkaar door bij sorteren op een kolom. Bij de sortering kan je namelijk aangeven of je iets oplopend (van klein naar groot) of aflopend (van groot naar klein) wil hebben.

Gebruik daarbij "ORDER BY kolom1 DESC" voor aflopend en "ORDER BY kolom1 ASC" voor oplopend. Als je niets bij ORDER BY gebruikt is het default ASC. Je kunt ze zelfs combineren.
code:
1
2
3
SELECT id, voornaam, achternaam
FROM personen
ORDER BY achternaam DESC, voornaam ASC

HTH :)

  • Chopper_Rob
  • Registratie: November 2001
  • Laatst online: 01-05-2025
Op dinsdag 04 december 2001 16:28 schreef Greyfox het volgende:
Ik doe altijd:
code:
1
2
3
do while not rs.eof
  rs.movenext
loop

dan laat ie alle records zien.
Dit heb ik ook gedaan, maar dan laat ie alles zien. Dit is dus niet de bedoeling. Ik moet alleen de laatste in de tabel zien.

https://drinkwaterpunten.nl


  • nodezero
  • Registratie: Juni 2000
  • Niet online
Op dinsdag 04 december 2001 16:05 schreef Chopper_Rob het volgende:
Dit had ik geprobeerd maar dan krijg ik een foutmelding
Vreemd moet eigenlijk wel kunnen

Het kan zijn dat je een foutmelding krijgt omdat het cursortype dat je nu gebruikt die actie niet toelaat. Je kunt het cursortype veranderen (moet je even opzoeken) en dan kun je vrolijk :) door je RS lopen, dus ook een movelast actie doen...

  • Chopper_Rob
  • Registratie: November 2001
  • Laatst online: 01-05-2025
Op dinsdag 04 december 2001 17:56 schreef MrX het volgende:
Als uitbreiding op ml1's opmerking:

In de Bijbel stond: "Vele laatsten zullen eersten zijn, en vele eersten zullen laatsten zijn" :+

In SQL krijg je dat voor elkaar door bij sorteren op een kolom. Bij de sortering kan je namelijk aangeven of je iets oplopend (van klein naar groot) of aflopend (van groot naar klein) wil hebben.

Gebruik daarbij "ORDER BY kolom1 DESC" voor aflopend en "ORDER BY kolom1 ASC" voor oplopend. Als je niets bij ORDER BY gebruikt is het default ASC. Je kunt ze zelfs combineren.
code:
1
2
3
SELECT id, voornaam, achternaam
FROM personen
ORDER BY achternaam DESC, voornaam ASC

HTH :)
Dit zou het wel eens kunnen doen, maar in dezelfde ASP site word eerst een record toegevoegd, waarvan ik het factuurnummer niet weet(die wil ik dus zien te krijgen).

Als ik dan de selectie omdraai komt ie dan wel onderaan de tabel te staan of zet ie 'm onder de eerste omdat het is omgedraaid, waardoor de laatst toegevoegde boven in de tabel zelf komt te staan. :?

https://drinkwaterpunten.nl


  • Chopper_Rob
  • Registratie: November 2001
  • Laatst online: 01-05-2025
Op dinsdag 04 december 2001 18:24 schreef nodezero het volgende:

[..]

Vreemd moet eigenlijk wel kunnen

Het kan zijn dat je een foutmelding krijgt omdat het cursortype dat je nu gebruikt die actie niet toelaat. Je kunt het cursortype veranderen (moet je even opzoeken) en dan kun je vrolijk :) door je RS lopen, dus ook een movelast actie doen...
Thnx, ga ik morgen proberen

https://drinkwaterpunten.nl


Verwijderd

Op dinsdag 04 december 2001 18:27 schreef Chopper_Rob het volgende:

[..]

Dit zou het wel eens kunnen doen, maar in dezelfde ASP site word eerst een record toegevoegd, waarvan ik het factuurnummer niet weet(die wil ik dus zien te krijgen).

Als ik dan de selectie omdraai komt ie dan wel onderaan de tabel te staan of zet ie 'm onder de eerste omdat het is omgedraaid, waardoor de laatst toegevoegde boven in de tabel zelf komt te staan. :?
JIKES!

Nee, dat moet je zo niet doen. Stel nou dat er 2 records 'tegelijk' worden aangemaakt, en dat je de verkeerde vindt?

Als je een autoincrement ID gebruikt en je dat wil terugkrijgen moet je dat niet met INSERT doen maar met de .AddNew methode van het recordset object. Als je dan de velden gevuld hebt, doe dan een .Update. Als het goed is staat dan in de het veld van de recordset waar het ID in staat het voor dit toegevoegde record het nieuwe ID.

HTH :)

Verwijderd

Type database? Access of SQL Server? Bij SQL Server moet je eens kijken naar @@IDENTITY. Kun je het laatste id van een tabel mee krijgen.

Verwijderd

Op dinsdag 04 december 2001 17:56 schreef MrX het volgende:
Gebruik daarbij "ORDER BY kolom1 DESC" voor aflopend en "ORDER BY kolom1 ASC" voor oplopend.
En wil je dat dat bij een beetje tabel van formaat ook nog vooruit te branden is, zorg dan ook voor een (extra) descending index op die kolom. Wordt erg vaak vergeten...

Verwijderd

Op dinsdag 04 december 2001 21:15 schreef ml1 het volgende:
Type database? Access of SQL Server? Bij SQL Server moet je eens kijken naar @@IDENTITY. Kun je het laatste id van een tabel mee krijgen.
Als je een identity kolom in je tabel hebt opgenomen...

Verwijderd

Natuurlijk. Zei ook moet ie eens naar kijken :D

  • Chopper_Rob
  • Registratie: November 2001
  • Laatst online: 01-05-2025
Op dinsdag 04 december 2001 20:21 schreef MrX het volgende:

[..]

JIKES!

Nee, dat moet je zo niet doen. Stel nou dat er 2 records 'tegelijk' worden aangemaakt, en dat je de verkeerde vindt?

HTH :)
Daar had ik zelf wel aan gedacht, maar dat gebeurt toch niet. Het is voor een eindproject van mijn opleiding, er word van maar een plek een bestelling gemaakt. Dus dat is niet erg

https://drinkwaterpunten.nl


  • Chopper_Rob
  • Registratie: November 2001
  • Laatst online: 01-05-2025
Op dinsdag 04 december 2001 22:03 schreef ml1 het volgende:
Natuurlijk. Zei ook moet ie eens naar kijken :D
ja ja, is Access database

https://drinkwaterpunten.nl


  • Chopper_Rob
  • Registratie: November 2001
  • Laatst online: 01-05-2025
Op dinsdag 04 december 2001 17:56 schreef MrX het volgende:

Gebruik daarbij "ORDER BY kolom1 DESC" voor aflopend en "ORDER BY kolom1 ASC" voor oplopend. Als je niets bij ORDER BY gebruikt is het default ASC. Je kunt ze zelfs combineren.
code:
1
2
3
SELECT id, voornaam, achternaam
FROM personen
ORDER BY achternaam DESC, voornaam ASC

HTH :)
Ik heb dit geprobeerd, maar het werkt niet. Dit is de gebruikte code:

SELECT * FROM Bestellingen ORDER BY ID-Nr

Het geeft een foutmelding

Too few parameters. Expected 2.

Wat doe ik niet goed.

https://drinkwaterpunten.nl


Verwijderd

Je kan gewoon <recordset naam>.MoveLast gebruiken.
Je kan dit script proberen het werkt.

Voorbeeld:
<%@ LANGUAGE = VBScript %>
<% Option Explicit %>
<%
Dim objConn, strConnect
Set objConn = Server.CreateObject ("ADODB.Connection") strConnect="Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=c:\testomgeving\asp\stats.mdb;" & _
"Persist Security Info=False"
objConn.Open strConnect

Const adOpenDynamic = 2
Const adLockOptimistic = 3
Const adCmdTable = 2

Dim objRS
Set objRS = Server.CreateObject ("ADODB.Recordset")
objRS.Open "tblFileStats", strConnect, adOpenDynamic, adLockOptimistic, adCmdTable

objRS.MoveLast
Response.Write objRS.Fields("fldDate")

objRS.Close
Set objRS = Nothing

objConn.Close
Set objConn = Nothing
%>

Ik hoop dat je er iets aan hebt.

Verwijderd

objRS.Open "tblFileStats", strConnect, adOpenDynamic
maakt het verschil. Normaal gebruik je een adOpenForwardOnly cursor. Dan kun je wel een record vooruit, maar niet achteruit. Is snel, maar je kunt bijv. niet terug...

  • Chopper_Rob
  • Registratie: November 2001
  • Laatst online: 01-05-2025
Ik heb al een oplossing gevonden om het laatste record op het scherm te zetten.

do while not rs.EOF
ID = rs("ID-Nr")
RS.Movenext
wend
response.write(ID)

Dus de laatste record word in de variabele gezet en na de loop laat ik de waarde op het scherm zien. Misschein niet de mooiste oplossing, maar het werkt. :)

https://drinkwaterpunten.nl

Pagina: 1