danne_eriksson Posted November 29, 2004 Share Posted November 29, 2004 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 Link to comment Share on other sites More sharing options...
jarlh Posted November 30, 2004 Share Posted November 30, 2004 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. Link to comment Share on other sites More sharing options...
danne_eriksson Posted November 30, 2004 Author Share Posted November 30, 2004 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 Link to comment Share on other sites More sharing options...
jarlh Posted November 30, 2004 Share Posted November 30, 2004 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. Link to comment Share on other sites More sharing options...
danne_eriksson Posted November 30, 2004 Author Share Posted November 30, 2004 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 Link to comment Share on other sites More sharing options...
danne_eriksson Posted November 30, 2004 Author Share Posted November 30, 2004 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.... Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.