Just nu i M3-nätverket
Gå till innehåll

Siffror som inte existerar


danne_eriksson

Rekommendera Poster

danne_eriksson

Tjena.

 

 

Jag sitter med ett medlemsregister i en MS Access-databas och skulle behöva hjälp med en SQL-sträng.

 

 

Varje medlem har ett unikt medlemsnr från 0 och uppåt. Men jag skulle vilja lista alla nummer som inte används mellan 0 och det högsta medlemsnumret.

 

Ex: av medlemsnumrena 0,2,3,5,10 kan jag lista de som saknas: 1,4,6,7,8,9.

 

 

Tack på förhand

/Daniel

 

 

Länk till kommentar
Dela på andra webbplatser

Här kommer en nästan bra lösning:

 

SELECT mnr +1

FROM medlemmar

WHERE mnr IN (SELECT mnr FROM medlemmar)

AND mnr+1 NOT IN (SELECT mnr FROM medlemmar)

AND mnr < (SELECT MAX(mnr) FROM medlemmar)

 

Listar inte alla men kanske tillräckligt många lediga nummer.

 

 

Länk till kommentar
Dela på andra webbplatser

danne_eriksson

Tack för hjälpen.

 

Hur skriver jag ut medlemsnumren från databasen för jag får bara felmedelandet:

 

Objektet kunde inte hittas i mängden med det begärda namnet eller numret.

 

 

Addera = "SELECT medlemsnr +1 From Babysim WHERE medlemsnr IN (SELECT medlemsnr FROM babysim) AND medlemsnr+1 NOT IN (SELECT medlemsnr FROM babysim) AND medlemsnr < (SELECT MAX(medlemsnr) FROM babysim)"

RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

Do Until RecSet.EOF

Me.List1.AddItem RecSet("medlemsnr")

RecSet.MoveNext

Loop

RecSet.Close

 

Länk till kommentar
Dela på andra webbplatser

Tja, din SQL-sats ser helt OK. Tydligen så klarar inte Access av SQL-standarden...

 

Du kan ju testa med att sätta parenteser kring medlemsnr+1, så kanske det hjälper.

 

Annars så får du testa med att ta bort en sak i taget och se när det går bra. Då vet du vad som krånglar. Först då kan man ta itu med problemet.

 

Länk till kommentar
Dela på andra webbplatser

danne_eriksson

Addera = "SELECT medlemsnr +1 From Babysim WHERE medlemsnr IN (SELECT medlemsnr FROM babysim) AND medlemsnr+1 NOT IN (SELECT medlemsnr FROM babysim) AND medlemsnr < (SELECT MAX(medlemsnr) FROM babysim)"

RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

Do Until RecSet.EOF

Me.List1.AddItem "test"

RecSet.MoveNext

Loop

RecSet.Close

 

 

SQL satsen fungerar utmärkt för när jag skriver "test" istället så fungerar det, men när jag försöker lista RecSet("medlemsnr") så blir det felmeddelande.

 

Tack för hjälpen i allafall, jag får fundera vidare.

 

 

/Daniel

 

Länk till kommentar
Dela på andra webbplatser

danne_eriksson

Addera = "SELECT (medlemsnr +1) as med From Babysim WHERE medlemsnr IN (SELECT medlemsnr FROM babysim) AND (medlemsnr+1) NOT IN (SELECT medlemsnr FROM babysim) AND medlemsnr < (SELECT MAX(medlemsnr) FROM babysim)"

RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

Do Until RecSet.EOF

Me.List1.AddItem RecSet("med")

 

RecSet.MoveNext

Loop

RecSet.Close

 

 

 

Det löste sig....

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...