[access97] SELECT @@IDENTITY

Pagina: 1
Acties:

  • Rene59
  • Registratie: April 2000
  • Laatst online: 08-07 20:34
Op m'n werk zijn ze bezig iedereen te voorzien van pc's met XP erop.
Bovenstaande werkt dan ook prima in Access XP.

Echter, ik wil de code ook compatible houden met de oude pc-tjes waar Access 97 op draait.

Ik heb me al suf gezocht hier, maar ben geen echt goede workaround tegen gekomen.

Als iemand kan bevestigen dat dit echt niet 100% goed voor elkaar te krijgen is in 97 dan heb ik een goede reden om het dan maar er bij te laten zitten, maar een perfect werkende workaround zou natuurlijk nog fijner zijn.
Ik zat zelf te denken aan het weglaten van de autoincrement kolom en zelf Id nummers toe te wijzen, maar is dat wel aan te raden?

Verwijderd

Wij hebben het ook gehad met maken van een web applicatie in ColdFusion.
Zelf alles getest in Acces 2000, blijkt @@IDENTITY niet te werken in 97.

Wij hebben het uiteindelijk opgelost door de grootste (max()) ID op te halen uit de tabel. Dit is wel niet zo netjes, maar we hadden geen tijd voor een andere oplossing (en de functies werden toch niet intensief gebruikt)

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:02
Rene59 schreef op 28 March 2003 @ 11:00:

Als iemand kan bevestigen dat dit echt niet 100% goed voor elkaar te krijgen is in 97 dan heb ik een goede reden om het dan maar er bij te laten zitten, maar een perfect werkende workaround zou natuurlijk nog fijner zijn.
Ik zat zelf te denken aan het weglaten van de autoincrement kolom en zelf Id nummers toe te wijzen, maar is dat wel aan te raden?


@@identity is niet gekend in Access 97.

Als je zelf id nummers gaat gaan toekennen, dan doe je dat best niet via een SELECT MAX() oid.
Je maakt dan beter een extra tabel waarin je voor iedere tabel in je DB waar je zelf id nummers voor bepaald gaat gaan bijhouden wat het laatste gegenereerde id was. Je hebt dan voor iedere tabel een record.
Als je dan een nieuw record in een bepaalde tabel gaat gaan toevoegen, lock je het record voor die tabel in de tabel die de id's bijhoudt, en bepaal je de nieuwe id en je doet een update van dat record. Daarna release je je lock.

https://fgheysels.github.io/


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Als je met het Recordset-object werkt, kan je na het invoegen van een record, een Bookmark opvragen van het laatst toegevoegde record binnen de connectie. Misschien heb je daar wat aan.

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • Rene59
  • Registratie: April 2000
  • Laatst online: 08-07 20:34
Zoiets had ik idd ook al gelezen ja. Alleen hoe die bookmarks werken is me niet duidelijk. Ik zal eens ff zoeken daarnaar.

Verwijderd

mhmm... werken die bookmarks ook onder .NET, ik gebruik meestal datareaders, maar ja, aangezien je (ik) meestal insert, update en delete queries uit laat voeren zonder return word het een beetje moeilijk, ik was ook op zoek naar @@IDENTITY

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:02
Verwijderd schreef op 28 March 2003 @ 20:43:
mhmm... werken die bookmarks ook onder .NET, ik gebruik meestal datareaders
Een datareader is een forward only en readonly 'recordset', dus die zal wel geen bookmarks hebben. ;)
maar ja, aangezien je (ik) meestal insert, update en delete queries uit laat voeren zonder return word het een beetje moeilijk, ik was ook op zoek naar @@IDENTITY

Eigenlijk zorg je er best voor dat je insert, update, delete en select statements in stored procedures zitten. Je kan een insert procedure dan het id van het nieuwe record laten teruggeven, bv:
code:
1
2
3
4
5
6
7
8
9
10
CREATE PROCEDURE InsertPerson ( @p_PersonId         INTEGER OUTPUT,
                                @p_PersonName   VARCHAR(50))
AS
BEGIN

  INSERT INTO tblPersons (PersonName) VALUES (@p_PersonName)

  SELECT @p_PersonId = @@identity FROM tblPersons

END

https://fgheysels.github.io/


Verwijderd

ik gebruik access maar voor 1 programmatje, alle andere sites/programma's gebruik ik mysql en die ondersteunt ze niet.

[ Voor 59% gewijzigd door Verwijderd op 29-03-2003 19:46 ]

Pagina: 1