strSQL = " SELECT ip, SUBSTRING_INDEX( `ip` , '.', 1 ) AS ip1, SUBSTRING_INDEX(SUBSTRING_INDEX( `ip` , '.', 2 ),'.',-1) AS ip2, SUBSTRING_INDEX(SUBSTRING_INDEX( `ip` , '.', -2 ),'.',1) AS ip3, SUBSTRING_INDEX( `ip` , '.', -1 ) AS ip4 FROM server WHERE ip LIKE '%" & Seek & "%' ORDER BY ip1, ip2, ip3, ip4"
Er dog ikke klar over, om SUBSTRING_INDEX() er tilgængelig i Access. Desværre.
strSQL = "Select from Server Where IP LIKE '%" & Seek & "%' order by int(left(IP,inStr(IP,'.')-1)), int(mid(IP,inStr(IP,'.')+1,inStr(IP,mid(IP,inStr(IP,'.')))-1)) , int(mid(mid(IP,inStr(IP,'.')+1),inStr(mid(IP,inStr(IP,'.')+1),'.')+1,inStr(mid(mid(IP,inStr(IP,'.')+1),inStr(mid(IP,inStr(IP,'.')+1),'.')+1),'.')-1)), int(mid(IP,inStrRev(IP,'.')+1))"
Som du nok kan regne ud er denne metode lidt tung at afvikle, så der ryger noget performance. Du vil med fordel drage nytte af at opdele IP'en i 4 selvstændige kolonner, som jeg nævnte i første post.
borupborup >> Vores løsninger er faktisk ens, selv om det ikke ser sådan ud. jensgram udnytter bare en funktion i MySQL, som ikke findes i Access (eller nogen anden database), Så den ene er ikke mere rigtig end den anden. Ville svare til at sige at a+=1 er mere rigtig end a=a+1. Nogle sprog har jo slet ikke += funktionen :o)
I Access har vi kun left/right/mid/inStr funktionerne at arbejde med, som jeg har brugt til at opdele IP med. Også har Access heller ikke mulighed for at bruge alias i "order by" hvorfor det ikke kan stå på selectlisten.
Jeg vil dog endnu engang opfordre dig til at ændre databaseopbygningen så du deler IP'en op i 4 selvstændige tabeller. Det er den bedste løsning (performansemæssig), lige meget hvilken database man bruger.
02/01-2007 13:16:45 > Præcis - det er ren syntax. Håber andre kan bruge løsningen, da mit manglende kendskab til Access var en begrænsning ;P
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.