Toon posts:

[ASP] Acces]Laatst ingevoegde Record weergeven

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

Verwijderd

Topicstarter
Hoi daar,

Als ik een record toevoeg dan wil ik de laatst toegevoegde ID van die record weergeven.
Dit lukt niet omdat ik dan niet de laatst toegevoegde ID krijg maar de voorlaatste.

Zo ziet mijn verbinding eruit :
%>
Option Explicit
Dim ObjConn
Dim StrConn
Dim StrQuery
Dim ObjRS
Dim Tel

Set ObjConn = Server.CreateObject("ADODB.Connection")
set ObjRS= server.Createobject("ADODB.RecordSet")
StrConn="Driver={Microsoft Access Driver (*.mdb)}; DBQ="
StrConn=StrConn & Server.MapPath("Database.mdb")

StrQuery = "Select * From Wagen;"
ObjRS.open StrQuery, StrConn,1,3
Tel= ObjRS.recordcount
Response.write "Er zijn " %><b><%=Tel%></b><%Response.write" Records aanwezig"

ObjRS.Close
set ObjRS = nothing
ObjConn.Close
set ObjConn = nothing
%>

  • waslijn
  • Registratie: Januari 2000
  • Laatst online: 10-09 05:52
Tel= ObjRS.recordcount + 1 ;)

Verwijderd

recordcount gebruiken om 't laatste record aan te wijzen is niet zo'n handige move, kan je niet beter het hoogste id opvragen dmv select max(id) from table; recordcount geeft ook niet altijd het aantal records goed terug (afhankelijk van je cursor positie/recordsettype) uitzoeken hoeveel records je hebt kan ook dmv een sql query select count(*) from table;

succ6!

--Ray

  • roelkw
  • Registratie: Augustus 2000
  • Laatst online: 23-08 13:48
strSQL = "SELECT * FROM tabel ORDER BY id DESC"

Moet je wel een ID-veld hebben trouwens...

En daarna natuurlijk:

var laatsteid
laatsteid = rs.Fields("id").Value

Verwijderd

Topicstarter
Nou veel mogelijkheden..dat is mooi
Maar die van WASLIJN geeft een goed resultaat weer...aantal records

En die van Roelkw werkt met de juiste naam weergeven die die het laatst ingevoegd is.

Die van Yarvieh kreeg ik niet voor elkaar
<i>select max(id) from table;</i> of
<i>select count(*) from table;</i>

Hier is de code nog eens..trouwens mooie site die http://www.w3schools.com/ heb ik in die ander thread gelezen. van MrX

KlantNummer is een Autonummerings veld.
<%
Option Explicit
Dim ObjConn
Dim StrConn
Dim StrQuery
Dim ObjRS
Dim Tel,Naam1

Naam1= Request.Form("Naam") ' Kijken als naam wel ingevuld is
If Naam1 = "" THEN
Response.Redirect("Login.asp") ' Anders stuur terug naar Login.asp
End IF

Set ObjConn = Server.CreateObject("ADODB.Connection")
set ObjRS= server.Createobject("ADODB.RecordSet")
StrConn="Driver={Microsoft Access Driver (*.mdb)}; DBQ="
StrConn=StrConn & Server.MapPath("Database.mdb")

Naam1=Server.HTMLEncode(Naam1)
StrQuery="Insert INTO Wagen (Klant) VALUES ('"&Naam1&"');"
ObjConn.Open StrConn
ObjConn.Execute StrQuery

StrQuery = "Select * From Wagen;"
ObjRS.open StrQuery, StrConn,1,3
Tel = ObjRS.recordcount <i>+ 1</i>

<i> StrQuery = "SELECT * FROM Wagen ORDER BY KlantNummer DESC"</i>
Set ObjRS=ObjConn.Execute (StrQuery)

Response.write "Er zijn " %><b><%=Tel%></b><%Response.write" Records aanwezig"%><BR>


Dit is je naam <b><%Response.write(ObjRS("Klant"))%></b><BR>
Dit is je KlantNummer <b><%Response.write(ObjRS("KlantNummer"))%></b><%


ObjRS.Close
set ObjRS = nothing
ObjConn.Close
set ObjConn = nothing
%>
Bedankt voor julie reply's

  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
objRS.MoveLast
Response.Write "Nummer is" & objRS("id") & "."
objRS.Close

Volgens mij doet dit hetzefde. Laatste record opvragen en id weergeven.

Verwijderd

Als ik het goed begrijp wil je het ID opvragen van een zojuist geinsert record. Dit kun je heel handig met het recordset object doen:

Set ObjConn = Server.CreateObject("ADODB.Connection")
set ObjRS= server.Createobject("ADODB.RecordSet")
StrConn="Driver={Microsoft Access Driver (*.mdb)}; DBQ="
StrConn=StrConn & Server.MapPath("Database.mdb")

' Even een lege recordset ophalen
strSQL = "SELECT * FROM Wagen WHERE 1=0"
ObjConn.Open StrConn
ObjRS.Open strSQL, ObjConn, 1, 3

' Nu de waardes invullen
ObjRS.AddNew
ObjRS("veld1") = waarde voor veld1
enz...

' Updaten
ObjRS.Update

' Nu kun je zo het ID uitlezen
intID = ObjRS("IDveld")

Er zijn 2 grote voordelen verbonden aan bovenstaande methode:
1. Geen gedoe met Recordcount of SELECT MAX(). Blijven toch geen waterdichte methodes.
2. je hoeft geen speciale tekens meer af te vangen of kwootjes om character data te zetten. Dat doet het Recordset object voor je.

1 Nadeel: performance

  • bloody
  • Registratie: Juni 1999
  • Laatst online: 20:58

bloody

0.000 KB!!

zo moet het eigenlijk:

Dim inventaris
set inventaris=server.createobject("ADODB.connection")
inventaris.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=d:inventaris.mdb"
inventaris.Open


strSQL = "SELECT @@Identity"
set objRS = server.createObject("adodb.recordset")
objRS.open strSQl, inventaris
nummertje= objrs.fields.item(0).value


dus "nummertje" is laatst toegevoegde record!

nope


Verwijderd

<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>Op 06 november 2000 12:32 schreef bloody het volgende:
zo moet het eigenlijk:
<knip>
strSQL = "SELECT @@Identity"
set objRS = server.createObject("adodb.recordset")
objRS.open strSQl, inventaris
nummertje= objrs.fields.item(0).value


dus "nummertje" is laatst toegevoegde record![/quote]Helaas werkt dit niet bij Access (alleen SQL Server). Als je alleen SQL Server gebruikt is SELECT @@identity inderdaad de beste methode.

Verwijderd

Topicstarter
Wel..bedankt,
Het is gelukt om zowel de aantal records op te vragen alswel de juiste gegevens weer uit te lezen.
Hier is het nog een keer en werkend.
Op naar de volgende probleem.

<%
Option Explicit
Dim ObjConn
Dim StrConn
Dim StrQuery
Dim ObjRS
Dim Tel,Naam1

Naam1= Request.Form("Naam") ' Kijken als naam wel ingevuld is
If Naam1 = "" THEN
Response.Redirect("Login.asp") ' Anders stuur terug naar Login.asp
End IF

Set ObjConn = Server.CreateObject("ADODB.Connection")
set ObjRS= server.Createobject("ADODB.RecordSet")
StrConn="Driver={Microsoft Access Driver (*.mdb)}; DBQ="
StrConn=StrConn & Server.MapPath("Database.mdb")

'HTML codes uitschakelen
Naam1=Server.HTMLEncode(Naam1)
StrQuery="Insert INTO Wagen (Klant) VALUES ('"&Naam1&"');"
ObjConn.Open StrConn
ObjConn.Execute StrQuery

'Tellen hoeveel records of er zijn
StrQuery = "Select * From Wagen;"
ObjRS.open StrQuery, StrConn,1,3
Tel = ObjRS.recordcount + 1

'Laatst ingevoegde record uitlezen
StrQuery = "SELECT * FROM Wagen ORDER BY KlantNummer DESC"
Set ObjRS=ObjConn.Execute (StrQuery)

Response.write "Er zijn " %><b><%=Tel%></b><%Response.write" Records aanwezig"%><BR>
Dit is je naam <b><%Response.write(ObjRS("Klant"))%></b><BR>
Dit is je KlantNummer <b><%Response.write(ObjRS("KlantNummer"))%></b><%


ObjRS.Close
set ObjRS = nothing
ObjConn.Close
set ObjConn = nothing
%>

Groetjes
Jury

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 21:23

HenkS

Da_king alias HenkS

dat:
SELECT @@IDENTITY AS 'Identity'

hoe gebruik ik dat precies als ik eerst dit heb:


cmdTemp.CommandType = 2
cmdTemp.CommandText = cTable
Set cmdTemp.ActiveConnection = DB
RS.Open cmdTemp, , 0, 3

RS.AddNew
RS("ict_kennis") = vIct
RS("persoon_id") = vIdcheck
RS.Update


hoe vraag ik dan precies laatst ingevoegde ID op?? (SQL-server) het moet dus met dat identity, maar ik snap niet hoe ik dat hierbij moet gebruiken, alvast thanks
Pagina: 1