04. april 2002 - 08:54Der er
22 kommentarer og 1 løsning
Søge på årstals-intervaller
I forbindelse med udarbejdelse af en søgemaskine i en Accessdb har jeg brug at kunne foretage en årstals-intervalsøgning. Jeg skal fx kunne søge efter poster, der oprettet i intervallet fra 1970 til 1990. Hvordan vil sql-sætningen se ud, der kan løse det problem?
Hvad mener du med heltal - om det har datatypen DATO OG KLOKKESLET i db´en? Undskyld min måske uklare formulering af ovenstående spørgsmål, men jeg ønsker sql-sætningen, hvor årstallene kan variere. Dvs. det fx både skal være muligt at søge på intervallet 1952 til 1974 som på 1970 til 1990.
Hvis du kan vælge er det bedst at gemme årstallet som tal (langt heltal). Fordi det så er enklere at lave søgningen, og indexering vil få opslaget til at gå kvikt.
Kan du bruge dette her? datatypen er DATO OG KLOKKESLET i db´en din AAR er her strDato din Table = tbl_Dato
<% MyYear = Year(Date) SeekYear1 = 1957 'kunne komme fra en querystring SeekYear2 = 1970 'kunne komme fra en querystring Seek1 = SeekYear1 Seek2 = SeekYear2
strSQL = "SELECT strDato FROM tbl_Dato" 'hente alle års tal ind
Set rs = Conn.Execute(strSQL) 'skriver de 2 årstal ud vi søger efter response.write "1 søge år : " & Seek1 & "<br>" response.write "2 søge år : " & Seek2 & "<br>" Do While Not rs.EOF'loop'er igennem vores års tal og udskriver alle års tal der er lig med eller imellem Seek1 og Seek2 if SeekYear1 <= Year(rs("strDato")) and SeekYear2 => Year(rs("strDato")) then Response.write "år : " & Year(rs("strDato")) & "<br>" end if rs.MoveNext Loop 'Luk database Conn.Close Set Conn = Nothing %>
Olhansen dit svar virker og du skal have pointene. Problemet er bare at jeg ikke kan give dig dem rent teknisk, idet dit navn ikke optræder blandt de personer jeg kan tildele point. Her optræder kun Gizom og coltau. Hvad gør vi??
og tak. gizom: den rigtige løsning er den der passer til datatypen. Det går ikke an at fyre Year() af på et tekst felt. Og løsningen er ikke scalerbar, da Year() ikke er standard SQL, så hvis der skiftes til oracle eller SQL-server, vil dette ikke virke.
olhnsen:> No hard feelings, og ja det ved jeg godt at Year ikke er standard i SQL, men han spurgte til Access DB og jeg forstod det som om at han brugte datatypen DATO OG KLOKKESLET i db´en. Jeg vil nok bare ikke bruge så meget tid næste gang, på at besvare spørgsmål, når jeg åbenbart ikke har fattet et døjt om hvad spørgeren vil have af svar. coltau forslag til en Access db løsning virker helt som det skal! men alligevel syntes jeg han brude have delt point imellem jer. Lidt tidlig weekend du holder dig :> Gizom
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.