webForumDet fria alternativet

Få fram lägsta lediga löpnummer i en kolumn

Databaser & SQL

2 svar · 194 visningar · startad av mattiasnordin

Medlem sedan maj 20012 080 inlägg
Frågan#1

Hej,

Finns det något smidigt sätt att få fram det lägsta lediga löpnummer i en kolumn i en access 97 databas?

Formatet på datan i kolumnen är "PC000" osv. Det är ett register över datorer så jag kan inte ändra formatet. Nu händer det att tex PC037 tas ur bruk och då vill jag att nästa dator som läggs till ska få det numret.

Några förslag på hur SQL frågan ska se ut?

Medlem sedan dec. 200012 464 inlägg
#2

Det går väl med en sqlsats men inte alls på något effektivt sätt.

Det enklaste är att du löper igenom alla värden

q = "select cint(mid(c,3,3)) from t order by 1"
set rs = conn.execute(q)
p = ""
n = ""
do until rs.eof
if p <> "" then
  if cint(rs(0)) - cint(p) > 1 then
     n = cint(p) + 1
     exit do
  end if
end if
  p = rs(0)
  rs.movenext
loop
if n = "" then n = cint(p) + 1

Det här är heller inte så bra. Vad händer om du har två samtidiga användare? Varför måste du återutnyttja nummer? Det allra enklaste är att använda counter i databasen

Medlem sedan maj 20012 080 inlägg
#3

Har insett att det var för krångligt att återanvända IDnummren :l

Fick det dock att fungera på annat sätt. Tack för hjälpen.

377 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
236 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)