[SQL/ASP] sleutel van nieuwe record achterhalen

Pagina: 1
Acties:

  • chaozz
  • Registratie: Juni 2000
  • Laatst online: 22:57
ik wil na het toevoegen van een record aan een tabel, meteen het nieuwe id nummer (sleutel) van dat nieuwe record weten. deze sleutel is alleen uniek, alle overige velden van het record niet.. dus zoeken op (in dit geval) de projectnaam na het toevoegen van het record, werkt niet!

de code:
code:
1
2
3
4
5
RS.Open "project", Conn, 2, 2
RS.AddNew
RS("projectnaam") = Request.Form("txtProjectnaam")
RS("nogmeervelden") = Request.Form("bla_bla_bla")
RS.Update

het veld "projectid" is de unieke sleutel, maar hoe kom ik nu achter deze waarde?

chaozz.nl | RetroGameCouch


  • Sjnirk
  • Registratie: Maart 2001
  • Laatst online: 27-03-2025

Sjnirk

Hie vrieve

Een rs.movelast? of een query met een Select max(sleutel)
Tenminste als het record wat je toevoegd achteraan komt

Bikkelen gebeurt pas na 2:00


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10:39

Janoz

Moderator Devschuur®

!litemod

Op vrijdag 19 april 2002 10:38 schreef Sjnirk het volgende:
Een rs.movelast? of een query met een Select max(sleutel)
Tenminste als het record wat je toevoegd achteraan komt
Dit zijn niet de oplossingen die je wilt hebben. Nofi, maar dit is erg gevoelig voor race-problemen. (Bedenk maar eens wat er kan gebeuren als 2 mensen tegelijk een record toevoegen)

Is er niet een manier om de last inserted id op te vragen? Als zelfs een beperkte database als MySQL zo'n functie heeft neem ik aan dat Microsoft hier ook wel aan heeft gedacht.

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


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:02
code:
1
select @@identity ...

https://fgheysels.github.io/


  • chaozz
  • Registratie: Juni 2000
  • Laatst online: 22:57
Op vrijdag 19 april 2002 10:53 schreef Janoz het volgende:

[..]

Dit zijn niet de oplossingen die je wilt hebben. Nofi, maar dit is erg gevoelig voor race-problemen. (Bedenk maar eens wat er kan gebeuren als 2 mensen tegelijk een record toevoegen)

Is er niet een manier om de last inserted id op te vragen? Als zelfs een beperkte database als MySQL zo'n functie heeft neem ik aan dat Microsoft hier ook wel aan heeft gedacht.
je slaat de spijker op zijn kop!!! als idd 2 mensen tegelijkertijd een record toevoegen gaat het zonder meer fout...

die code in de post hierboven vat ik ff niet. zou je dit naar een concreet SQL statement kunnen vertalen?

chaozz.nl | RetroGameCouch


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:02
Is dit geen concreet SQL statement misschien?
code:
1
select @@identity from tabel

geeft het id terug van het laatste geinserte record.

https://fgheysels.github.io/


  • chaozz
  • Registratie: Juni 2000
  • Laatst online: 22:57
Op vrijdag 19 april 2002 11:05 schreef whoami het volgende:
Is dit geen concreet SQL statement misschien?
code:
1
select @@identity from tabel

geeft het id terug van het laatste geinserte record.
en na het uitvoeren kan ik zo doen:
code:
1
strProjectID = RS("projectid").value ???

chaozz.nl | RetroGameCouch


  • chaozz
  • Registratie: Juni 2000
  • Laatst online: 22:57
dit werkt dus niet..

na het toevoegen doe ik zo:
code:
1
2
3
4
5
6
7
8
9
10
 RS.Update
 'nu de tabel afsluiten
 RS.Close

  dim strProjectID

   SQL = "SELECT @@IDENTITY from PROJECT"
   RS.Open SQL, Conn, 2, 2
   strProjectID = RS("projectid").value
   response.write strProjectID

nu geeft hij een error, omdat hij RS("projectid") niet kan weergeven, omdat die niet in het SELECT gedeelte staat. klinkt logisch...

chaozz.nl | RetroGameCouch


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:02
Dan doe je:
code:
1
select @@identity as projectid from ...

https://fgheysels.github.io/


  • PegOpDeWeg
  • Registratie: Oktober 2001
  • Laatst online: 04-08 13:25

PegOpDeWeg

eej wasup?

Je kan meteen de ingevoerde record gegevens opvragen nadat je RS.Update hebt gedaan.

Bijvoorbeeld:

RS.Open "project", Conn, 2, 2
RS.AddNew
RS("projectnaam") = Request.Form("txtProjectnaam")
RS("nogmeervelden") = Request.Form("bla_bla_bla")
RS.Update

response.write rs("projectnaam_ID") &"<br>"
response.write rs("uniek_record_ID") &"<br>"

rs.close
etc. etc.

"It's better to burn out, than fade away"


  • chaozz
  • Registratie: Juni 2000
  • Laatst online: 22:57
Op vrijdag 19 april 2002 11:12 schreef obiwanos het volgende:
Je kan meteen de ingevoerde record gegevens opvragen nadat je RS.Update hebt gedaan.

Bijvoorbeeld:

RS.Open "project", Conn, 2, 2
RS.AddNew
RS("projectnaam") = Request.Form("txtProjectnaam")
RS("nogmeervelden") = Request.Form("bla_bla_bla")
RS.Update

response.write rs("projectnaam_ID") &"<br>"
response.write rs("uniek_record_ID") &"<br>"

rs.close
etc. etc.
volgens mij is dat niet zo. dat heb ik namenlijk als eerste geprobeerd. leek mij ook logisch, de software vond van niet.

chaozz.nl | RetroGameCouch


  • chaozz
  • Registratie: Juni 2000
  • Laatst online: 22:57
code:
1
2
3
4
5
6
7
8
9
10
 RS.Update
 'nu de tabel afsluiten
 RS.Close

  dim strProjectID

   SQL = "SELECT @@IDENTITY AS projectid FROM PROJECT"
   RS.Open SQL, Conn, 2, 2
   strProjectID = RS("projectid").value
   response.write strProjectID

lijkt te werken, maar geeft als uitvoer: 0
das nie goe

chaozz.nl | RetroGameCouch


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Ik hoop voor je dat de combinatie van alle velden wel uniek is. Anders wordt het sowieso lastig om het record terug te vinden later. Met een select op al deze waarden kan je dan toch altijd ook je ID selecteren.

  • chaozz
  • Registratie: Juni 2000
  • Laatst online: 22:57
Op vrijdag 19 april 2002 11:20 schreef Goodielover het volgende:
Ik hoop voor je dat de combinatie van alle velden wel uniek is. Anders wordt het sowieso lastig om het record terug te vinden later. Met een select op al deze waarden kan je dan toch altijd ook je ID selecteren.
alle velden, dat wordt leuk:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
 If Request.Form("txtProjectnaam") <> "" then  RS("projectnaam") = Request.Form("txtProjectnaam")
 If Request.Form("txtOudeprojectnaam1") <> "" then RS("Oudeprojectnaam1") = Request.Form("txtOudeprojectnaam1")
 If Request.Form("txtOudeprojectnaam2") <> "" then RS("Oudeprojectnaam2") = Request.Form("txtOudeprojectnaam2")
 If Request.Form("txtOudeprojectnaam3") <> "" then RS("Oudeprojectnaam3") = Request.Form("txtOudeprojectnaam3")
 If Request.Form("txtOudeprojectnaam4") <> "" then RS("Oudeprojectnaam4") = Request.Form("txtOudeprojectnaam4")
 If Request.Form("txtOudeprojectnaam5") <> "" then RS("Oudeprojectnaam5") = Request.Form("txtOudeprojectnaam5")
 If Request.Form("txtOudeprojectnaam6") <> "" then RS("Oudeprojectnaam6") = Request.Form("txtOudeprojectnaam6")
 If Request.Form("txtOudeprojectnaam7") <> "" then RS("Oudeprojectnaam7") = Request.Form("txtOudeprojectnaam7")
 If Request.Form("txtOudeprojectnaam8") <> "" then RS("Oudeprojectnaam8") = Request.Form("txtOudeprojectnaam8")
 If Request.Form("txtOudeprojectnaam9") <> "" then RS("Oudeprojectnaam9") = Request.Form("txtOudeprojectnaam9")
 If Request.Form("txtOudeprojectnaam10") <> "" then RS("Oudeprojectnaam10") = Request.Form("txtOudeprojectnaam10")
 If Request.Form("txtProjectnummer1") <> "" then RS("Projectnummer1") = Request.Form("txtProjectnummer1")
 If Request.Form("txtProjectnummer2") <> "" then RS("Projectnummer2") = Request.Form("txtProjectnummer2")
 If Request.Form("txtProjectnummer3") <> "" then RS("Projectnummer3") = Request.Form("txtProjectnummer3")
 If Request.Form("txtProjectnummer4") <> "" then RS("Projectnummer4") = Request.Form("txtProjectnummer4")
 If Request.Form("txtProjectnummer5") <> "" then RS("Projectnummer5") = Request.Form("txtProjectnummer5")
 If Request.Form("txtProjectnummer6") <> "" then RS("Projectnummer6") = Request.Form("txtProjectnummer6")
 If Request.Form("txtProjectnummer7") <> "" then RS("Projectnummer7") = Request.Form("txtProjectnummer7")
 If Request.Form("txtProjectnummer8") <> "" then RS("Projectnummer8") = Request.Form("txtProjectnummer8")
 If Request.Form("txtProjectnummer9") <> "" then RS("Projectnummer9") = Request.Form("txtProjectnummer9")
 If Request.Form("txtProjectnummer10") <> "" then RS("Projectnummer10") = Request.Form("txtProjectnummer10")
 If Request.Form("txtContactpersoon1") <> "" then RS("Contactpersoon1") = Request.Form("txtContactpersoon1")
 If Request.Form("txtContactpersoon2") <> "" then RS("Contactpersoon2") = Request.Form("txtContactpersoon2")
 If Request.Form("txtContactpersoon3") <> "" then RS("Contactpersoon3") = Request.Form("txtContactpersoon3")
 If Request.Form("txtContactpersoon4") <> "" then RS("Contactpersoon4") = Request.Form("txtContactpersoon4")
 If Request.Form("txtContactpersoon5") <> "" then RS("Contactpersoon5") = Request.Form("txtContactpersoon5")
 If Request.Form("txtOudecontactpersoon1") <> "" then RS("Oudecontactpersoon1") = Request.Form("txtOudecontactpersoon1")
 If Request.Form("txtOudecontactpersoon2") <> "" then RS("Oudecontactpersoon2") = Request.Form("txtOudecontactpersoon2")
 If Request.Form("txtOudecontactpersoon3") <> "" then RS("Oudecontactpersoon3") = Request.Form("txtOudecontactpersoon3")
 If Request.Form("txtOudecontactpersoon4") <> "" then RS("Oudecontactpersoon4") = Request.Form("txtOudecontactpersoon4")
 If Request.Form("txtOudecontactpersoon5") <> "" then RS("Oudecontactpersoon5") = Request.Form("txtOudecontactpersoon5")
 If Request.Form("txtFieldserviceengineer1") <> "" then RS("Fieldserviceengineer1") = Request.Form("txtFieldserviceengineer1")
 If Request.Form("txtFieldserviceengineer2") <> "" then RS("Fieldserviceengineer2") = Request.Form("txtFieldserviceengineer2")
 If Request.Form("txtFieldserviceengineer3") <> "" then RS("Fieldserviceengineer3") = Request.Form("txtFieldserviceengineer3")
 If Request.Form("txtFieldserviceengineer4") <> "" then RS("Fieldserviceengineer4") = Request.Form("txtFieldserviceengineer4")
 If Request.Form("txtFieldserviceengineer5") <> "" then RS("Fieldserviceengineer5") = Request.Form("txtFieldserviceengineer5")
 If Request.Form("txtProjectengineer1") <> "" then RS("Projectengineer1") = Request.Form("txtProjectengineer1")
 If Request.Form("txtProjectengineer2") <> "" then RS("Projectengineer2") = Request.Form("txtProjectengineer2")
 If Request.Form("txtProjectengineer3") <> "" then RS("Projectengineer3") = Request.Form("txtProjectengineer3")
 If Request.Form("txtProjectengineer4") <> "" then RS("Projectengineer4") = Request.Form("txtProjectengineer4")
 If Request.Form("txtProjectengineer5") <> "" then RS("Projectengineer5") = Request.Form("txtProjectengineer5")
 If Request.Form("txtProjectleider1") <> "" then RS("Projectleider1") = Request.Form("txtProjectleider1")
 If Request.Form("txtProjectleider2") <> "" then RS("Projectleider2") = Request.Form("txtProjectleider2")
 If Request.Form("txtProjectleider3") <> "" then RS("Projectleider3") = Request.Form("txtProjectleider3")
 If Request.Form("txtProjectleider4") <> "" then RS("Projectleider4") = Request.Form("txtProjectleider4")
 If Request.Form("txtProjectleider5") <> "" then RS("Projectleider5") = Request.Form("txtProjectleider5")
 If Request.Form("txtProjectleideraftersales1") <> "" then RS("Projectleideraftersales1") = Request.Form("txtProjectleideraftersales1")
 If Request.Form("txtProjectleideraftersales2") <> "" then RS("Projectleideraftersales2") = Request.Form("txtProjectleideraftersales2")
 If Request.Form("txtProjectleideraftersales3") <> "" then RS("Projectleideraftersales3") = Request.Form("txtProjectleideraftersales3")
 If Request.Form("txtProjectleideraftersales4") <> "" then RS("Projectleideraftersales4") = Request.Form("txtProjectleideraftersales4")
 If Request.Form("txtProjectleideraftersales5") <> "" then RS("Projectleideraftersales5") = Request.Form("txtProjectleideraftersales5")
 If Request.Form("txtInstallateuronderhoud1") <> "" then RS("Installateuronderhoud1") = Request.Form("txtInstallateuronderhoud1")
 If Request.Form("txtInstallateuronderhoud2") <> "" then RS("Installateuronderhoud2") = Request.Form("txtInstallateuronderhoud2")
 If Request.Form("txtInstallateuronderhoud3") <> "" then RS("Installateuronderhoud3") = Request.Form("txtInstallateuronderhoud3")
 If Request.Form("txtInstallateuronderhoud4") <> "" then RS("Installateuronderhoud4") = Request.Form("txtInstallateuronderhoud4")
 If Request.Form("txtInstallateuronderhoud5") <> "" then RS("Installateuronderhoud5") = Request.Form("txtInstallateuronderhoud5")
 If Request.Form("txtInstallateurrealisatie1") <> "" then RS("Installateurrealisatie1") = Request.Form("txtInstallateurrealisatie1")
 If Request.Form("txtInstallateurrealisatie2") <> "" then RS("Installateurrealisatie2") = Request.Form("txtInstallateurrealisatie2")
 If Request.Form("txtInstallateurrealisatie3") <> "" then RS("Installateurrealisatie3") = Request.Form("txtInstallateurrealisatie3")
 If Request.Form("txtInstallateurrealisatie4") <> "" then RS("Installateurrealisatie4") = Request.Form("txtInstallateurrealisatie4")
 If Request.Form("txtInstallateurrealisatie5") <> "" then RS("Installateurrealisatie5") = Request.Form("txtInstallateurrealisatie5")
 If Request.Form("txtAdres") <> "" then RS("Adres") = Request.Form("txtAdres")
 If Request.Form("txtPostcodeadres") <> "" then RS("Postcodeadres") = Request.Form("txtPostcodeadres")
 If Request.Form("txtPlaats") <> "" then RS("Plaats") = Request.Form("txtPlaats")
 If Request.Form("txtPostbusnummer") <> "" then RS("Postbusnummer") = Request.Form("txtPostbusnummer")
 If Request.Form("txtPostcodepostbus") <> "" then RS("Postcodepostbus") = Request.Form("txtPostcodepostbus")
 If Request.Form("txtTelefoonnummer") <> "" then RS("Telefoonnummer") = Request.Form("txtTelefoonnummer")
 If Request.Form("txtFaxnummer") <> "" then RS("Faxnummer") = Request.Form("txtFaxnummer")
 If Request.Form("txtInbelverbindingID") <> "" then RS("InbelverbindingID") = Request.Form("txtInbelverbindingID")
 If Request.Form("txtInbelnummer") <> "" then RS("Inbelnummer") = Request.Form("txtInbelnummer")
 If Request.Form("txtStartdatum") <> "" then RS("Startdatum") = Request.Form("txtStartdatum")
 If Request.Form("txtOnderhoudcontractnummer") <> "" then RS("onderhoudcontractnummer") = Request.Form("txtOnderhoudcontractnummer")
 If Request.Form("txtSysteemID") <> "" then RS("SysteemID") = Request.Form("txtSysteemID")
 If Request.Form("txtRoutebeschrijving") <> "" then RS("Routebeschrijving") = Request.Form("txtRoutebeschrijving")
 If Request.Form("txtBeschrijvingoverig") <> "" then RS("Beschrijvingoverig") = Request.Form("txtBeschrijvingoverig")

chaozz.nl | RetroGameCouch


  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 22-08 14:31

Basszje

Reisvaap!]

Even tussendoor, ik neem aan dat het niet zo in je database staat ( dat deze wel genormaliseerd is :? ) .

Volgens mij kan je op een recordset idd gewoon weer met RS("ID") je id weer achterhalen :?

Probeer anders de id voor de update op te halen en niet erna :? Oftewel er gewoon even mee spelen :)

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Op vrijdag 19 april 2002 11:29 schreef Basszje het volgende:
Even tussendoor, ik neem aan dat het niet zo in je database staat ( dat deze wel genormaliseerd is :? ) .

Volgens mij kan je op een recordset idd gewoon weer met RS("ID") je id weer achterhalen :?

Probeer anders de id voor de update op te halen en niet erna :? Oftewel er gewoon even mee spelen :)
Zeg alsjeblieft ja tegen de eerste vraag!

  • chaozz
  • Registratie: Juni 2000
  • Laatst online: 22:57
Op vrijdag 19 april 2002 11:31 schreef Goodielover het volgende:

[..]

Zeg alsjeblieft ja tegen de eerste vraag!
ja.

en wat betreft voor of na de update de ID opvragen: dat werkt niet!

ik ben echt even ten einde raad. na die RS.Update zou die recordset toch gewoon nog in je geheugen moeten staan. een RS("projectid") opvragen zou genoeg moeten zijn. maar dat is echt niet zo. probeer het maar eens.

chaozz.nl | RetroGameCouch


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:02
Welk DBMS gebruik je eigenlijk?
Als je SQL-Server 7 of Access2000 gebruikt, moet die @@identity wel werken.

https://fgheysels.github.io/


  • chaozz
  • Registratie: Juni 2000
  • Laatst online: 22:57
Op vrijdag 19 april 2002 11:46 schreef whoami het volgende:
Welk DBMS gebruik je eigenlijk?
Als je SQL-Server 7 of Access2000 gebruikt, moet die @@identity wel werken.
Access 97 (is een testopstelling voor prototyping) op een IIS server. ik maak verbinding met via de MS Jet engine:

een fragment...
code:
1
2
3
4
5
6
7
8
 Set Conn = Server.CreateObject("ADODB.Connection")
 Set RS = Server.CreateObject("ADODB.RecordSet")
 UserConnection = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\testdir\elmar\prototype\filemanager.mdb")
 Conn.Open UserConnection

   SQL = "SELECT * FROM project WHERE projectid = " & strProjectID
   RS.Open SQL, Conn, 2, 2
   ...

chaozz.nl | RetroGameCouch


  • Lorn
  • Registratie: Maart 2000
  • Laatst online: 13-01-2025

Lorn

I have a bad feeling...

Werkt die @@identity ook op een Oracle DB? Ben namelijk een applicatie aan het maken die nu nog SQL Server draait maar in de toekomst misschien wel naar Oracle gaat.

  • chaozz
  • Registratie: Juni 2000
  • Laatst online: 22:57
ik kan me niet voorstellen dat dit niet mogelijk is met SQL.

chaozz.nl | RetroGameCouch


  • chaozz
  • Registratie: Juni 2000
  • Laatst online: 22:57
geen wenselijke methode, maar dit SQL statement lijkt te werken. ik krijg alleen de waarde van projectid nog niet in een integer.
code:
1
SQL = "SELECT max(projectid) FROM project"

het gaat verkeerd, omdat projectid niet zelf in het SELECT gedeelte staat. doe je dit wel, dan gaat het natuurlijk weer fout... :(

chaozz.nl | RetroGameCouch


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:02
Kijk eens een paar posts hierboven.
Daar heb ik een voorbeeldje gepost van hoe je een alias in een sql-statement kunt zetten. (zoek eens een tutorial over SQL op het Net)

En select(max) is geen goede oplossing.

https://fgheysels.github.io/


  • chaozz
  • Registratie: Juni 2000
  • Laatst online: 22:57
Op vrijdag 19 april 2002 12:13 schreef whoami het volgende:
Kijk eens een paar posts hierboven.
Daar heb ik een voorbeeldje gepost van hoe je een alias in een sql-statement kunt zetten. (zoek eens een tutorial over SQL op het Net)

En select(max) is geen goede oplossing.
ja, je hebt gelijk. dat alias werkt goed. maar niet met die @@identity, het werkt nu zo:
code:
1
2
3
4
   SQL = "SELECT MAX(projectid) as myID FROM project"
   RS.Open SQL, Conn, 2, 2
   strProjectID = RS("myID")
   RS.Close

ik ben er BIJNA!!! :9

chaozz.nl | RetroGameCouch


  • PegOpDeWeg
  • Registratie: Oktober 2001
  • Laatst online: 04-08 13:25

PegOpDeWeg

eej wasup?

Ik weet heel zeker dat je meteen ingoerde velden weer kan opvragen. Dus ook een b.v. een Automatisch gegenereerd Key ID veld.

Dus NOGMAALS >:) dit moet gewoon werken:

De select die ik gebruikt heb om het nog is te testen:

dim CNS, rs,str,intNieuwKlantID

set rs = Server.CreateObject("ADODB.Recordset")
str = "SELECT * FROM tblklantgegevens"
rs.open str, CNS, 3, 2

rs.addnew
rs.fields("naam_persoon") = request.form("naam_persoon")
rs.fields("persoon_login") = request.form("persoon_login")
rs.fields("persoon_pass") = request.form("persoon_pass")
rs.update

'----- hier haal ik id op van dezelfde net ingevoerde record
intNieuwKlantID = rs.fields("id")

rs.close
Set rs = Nothing

"It's better to burn out, than fade away"


  • chaozz
  • Registratie: Juni 2000
  • Laatst online: 22:57
code:
1
rs.open str, CNS, 3, 2

[..]3,2
dat is dus (3)adOpenStatic (dan werk je met een statische copie) en (2)adLockPessimistic (meest uitgebreide vergrendeling).

ik gebruik 2,2 .. misschien ligt het daaraan. ik zal het proberen.

edit:

nou, schiet mij maar lek.
het werkt echt niet. ik snap je code en zou willen dat het werkte, maar dat doet het niet. je hebt gelijk. na de update moet de recordset gewoon toegankelijk zijn, maar projectid is niet op te vragen.

voor de goeie orde, ik gebruik Access97 op een IIS(3?) server via de JET engine.

chaozz.nl | RetroGameCouch


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Moet het ophalen van de ID niet al gebeuren na de addnew?
[codeset rs = Server.CreateObject("ADODB.Recordset")
str = "SELECT * FROM tblklantgegevens"
rs.open str, CNS, 3, 2

rs.addnew
intNieuwKlantID = rs.fields("id")
rs.fields("naam_persoon") = request.form("naam_persoon")
rs.fields("persoon_login") = request.form("persoon_login")
rs.fields("persoon_pass") = request.form("persoon_pass")
rs.update

rs.close
Set rs = Nothing
[/code]

  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 22-08 16:45
Ik doe het ook altijd zoals obiwanos, maar dan met
RS.Open "project", Conn, 1,3.
Dit op IIS 5 (win2000) met access 2000, zonder problemen.

Anders moet je eens kijken of je de nieuwe MDAC van microsoft kan installeren. Er schijnen met het ophalen van de sleutel van een nieuw toegevoegd record in oudere versie nogal wat problemen geweest te zijn.
http://www.microsoft.com/data/download.htm

  • Lister
  • Registratie: September 2001
  • Laatst online: 15-02-2022
Volgens Q221931 van de MSDN retourneert ADO altijd 0 voor het autonummerveld van een nieuw toegevoegd record.

Ik kan niet copy-pasten want MSDN staat op mijn andere pc en msdn.microsoft.com kent Q221931 niet??

Het komt hier op neer:
- lees na de update de absoluteposition uit en bewaar deze
- requery de recordset
- zet recordset.absoluteposition weer op de opgeslagen waarde
- lees het id uit
(en de CursorLocation moet adUseClient zijn)

[Voor Annie hieronder:]
Als ik op msdn.microsoft.com zoek dan wordt er niets gevonden maar als ik inderdaad op support.microsoft.com zoek dan vind ie hem wel, wat ik eigenlijk toch een beetje vreemd vindt omdat ik dacht dat de MSDN website gewoon alles van de MSDN cd's zou bevatten.

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Op vrijdag 19 april 2002 23:39 schreef Lister het volgende:
[knip] en msdn.microsoft.com kent Q221931 niet??
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q221931

Today's subliminal thought is:


  • chaozz
  • Registratie: Juni 2000
  • Laatst online: 22:57
ook de microsoft workaround werkt hier niet. de absoluteposition geeft -1 als waarde terug. maar ik heb nu een "smerige" methode die WEL werkt!
code:
1
2
3
4
5
6
7
8
RS.ADDNEW
RS("veld1") = Waarde1
RS("veld2") = Waarde2
RS("veld3") = Waarde3
RS.UPDATE
RS.MOVELAST
strProjectID = RS("projectid")
RS.CLOSE

als ik voor de update de RS open met vergrendeling, dan is dit waterdicht.

chaozz.nl | RetroGameCouch


  • Scharnout
  • Registratie: November 2000
  • Laatst online: 12:39

Scharnout

Meuk

Ik heb de klok ook horen luiden (ik prog nog maar net - paar weekjes), maar met MySQL kan je bv MySQL_INSERT_ID() doen en dan pakt hij automatisch het laatste auto increment nummer. Voor SQL is de code geloof ik (ergens gelezen) LAST-INSERT-ID(). Misschien dat je hier op kan zoeken.

And Bob's your uncle ...


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Op maandag 22 april 2002 13:50 schreef Scharnout het volgende:
Ik heb de klok ook horen luiden [knip]
misschien moet je toch maar eens de klepel gaan zoeken >:)

Today's subliminal thought is:


  • Scharnout
  • Registratie: November 2000
  • Laatst online: 12:39

Scharnout

Meuk

|:( Duidelijk .. probeerde hem net zelf uit op mijn eigen code en dikke voutmelding natuurlijk. Heb het nu ook met @@identity gedaan en dat werkt prima .. nu ff zoeken naar een ander probleem :)

And Bob's your uncle ...


  • chaozz
  • Registratie: Juni 2000
  • Laatst online: 22:57
zoeken naar een ander probleem? ik zoek liever naar een oplossing :z

chaozz.nl | RetroGameCouch


Verwijderd

Zie sig :Y)

  • TlighT
  • Registratie: Mei 2000
  • Laatst online: 22-03 10:40
Op vrijdag 19 april 2002 11:51 schreef Lorn het volgende:
Werkt die @@identity ook op een Oracle DB? Ben namelijk een applicatie aan het maken die nu nog SQL Server draait maar in de toekomst misschien wel naar Oracle gaat.
In Oracle werk je meestal met sequences:
code:
1
2
INSERT INTO MY_TABLE VALUES (MY_SEQ.NEXTVAL, FIELD1, FIELD2);
SELECT MY_SEQ.CURVAL FROM DUAL;

Maar als je in ASP zit, kun je misschien beter ADO functionaliteit gebruiken aangezien net dan voor beide databases zou moeten werken.
Pagina: 1