[Delphi]Records auto-nummeren

Pagina: 1
Acties:

  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 12:09
Hola! Is ie weer :)
Ik heb een Access database met een tabel tafel.
hierin is tafelnr de sleutel.
Als ik een nieuwe tafel wil toevoegen moet er een nummer ingevoerd worden (want het tafelnummer is prim key natuurlijk).
Nu wil ik het zo regelen dat er gekeken wordt dat het eerst volgende dat nog niet voorkomt als tafelnr wordt gebruikt.
(Dus niet kijken wat de hoogste waarde uit de kolom is en daar 1 bij optellen en als nummer gebruiken, want dan vallen er gaten na het verwijderen van een tafelnr).
Hoe ga ik dit in delphi regelen?

  • whoami
  • Registratie: December 2000
  • Laatst online: 13:47
Waarom wil je dat zo doen? Ik denk dat dat toch wel wat performantie gaat kosten...

Je kunt natuurlijk door heel uw table loopen (gesorteerd op PK) en daar dan iedere keer gaan kijken of er een 'gat' zit tussen 2 PK's. Maar dit kost natuurlijk tijd...


[edit]Trouwens, een SELECT MAX() is geen goeie manier om een PK te bepalen (race-condities ed). De manier die ik hierboven heb beschreven ook niet eigenlijk, omwille van dezelfde reden. (Als uw applicatie multi - user is).

https://fgheysels.github.io/


  • MikeN
  • Registratie: April 2001
  • Laatst online: 07-09 20:59
Laat ik de bovenstaande vraag anders stellen: Waarom wil je dat een ID een opeenvolgende lijst getallen is? Als je dit echt wil gebruik je hem _waarschijnlijk_ (IMHO) verkeerd.

  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 12:09
Erm, laat maar zitten hoor. Gebruik wel gewoon autonummering van access :)
Evengoed bedankt!

  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 12:09
*zucht*
Hoe regel ik dat een kolom automatisch genummerd wordt?
Als ik nu een SQL insert query geef in delphi met alleen een tafellocatie en geen tafelnr(dus ik geef nu zelf geen waarde voor de sleutel) dan krijg ik een EDBEngineError, oftewel het record bestaat al en de primsleutel tafelnr wordt dus NIET automatisch van een nummer voorzien.

  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 12:09
Wel de kolom op AUTONUMMERING zetten in access natuurlijk |:(
Pagina: 1