Gå til innhold

Access database og sql-query


Anbefalte innlegg

Hei

 

Jeg har en Access database med en tabell som heter Henvendelse hvor det er disse kolonnene:

- HenvendelsesID (Unikt nummer)

- Dato (Dato ved innlegging av henvendelse)

- Tid (Tid ved innlegging av henvendelse)

- Type (Type henvendelse)

- Bruker (Brukeren av henvendelsen)

- Tekniker (Teknikeren som har henvendelsen)

 

Programmet mitt legger inn en henvendelse som f.eks 6.11.2008|12:20|Datafeil|Ansatt|NavnPåTekniker

I programmet har jeg muligheten til å hente ut forskjellige querys med SQL string.

En query jeg ikke klarer å finne ut hvordan skal skrives er denne som jeg håper noen kan hjelpe meg med:

 

Den skal hente ut henvendelser fra tabellen Henvendelse for tidspunkt med mest trafikk innenfor de forskjellige Typene

 

Håper noen kan hjelpe.

Lenke til kommentar
Videoannonse
Annonse

Den skal kunne ta ut rapport etter dag, uke, måned og år ettersom hvem Type som har mest trafikk, hvis det er mulig å finne ut hvem Type som har flest counts etter dag, uke, måned og år?

Det kan gjerne bare være en SQL string så kan bruker redigere den til å passe til enten dag, uke, måned eller år så lenge stringen allerede inneholder en av dem!

Endret av miXer
Lenke til kommentar
Tidspunkt skal være tida for når henvendelsen ble lagt inn. F.eks 10:39 eller 12:21 osv.

Den skal kunne ta ut etter dag, uke, måned og år.

Det kan gjerne bare være en SQL string så kan bruker redigere den til å passe til enten dag, uke, måned eller år så lenge stringen allerede inneholder en av dem!

 

Jeg forulerte sikkert spørsmålet mitt litt uklart.

For å forklare litt bedre: En slik spørring vil telle antall forekomster innenfor et gitt tidsrom, f.eks. pr time, og returnere dette som en rad med f.eks. kolonnene dato+time og antall forekomster av Henvendelser.

Da vil spørringen kunne fortelle at den 7. november 2008 hadde "vi" flest henvendelser mellom kl 11.00 og 12.00, og antall var f.eks. 27.

Er det noe slik du tenker på?

Lenke til kommentar

Vel. Mer informativt svar ja, men hadde jo virkelig ingenting med spørsmål mitt i tråden å gjøre.

Men dersom jeg skal hente ut enten tid eller dato fra et dato/klokkeslett felt i en database så får jeg uansett tilbake begge deler, og da må dette splittes før jeg kan bruke det. Å det virket mer tungvindt for min del!

 

Fullt mulig det ikke er good practice, men ikke det spørsmål mitt gikk ut på!!

Lenke til kommentar
Vel. Mer informativt svar ja, men hadde jo virkelig ingenting med spørsmål mitt i tråden å gjøre.

Men dersom jeg skal hente ut enten tid eller dato fra et dato/klokkeslett felt i en database så får jeg uansett tilbake begge deler, og da må dette splittes før jeg kan bruke det. Å det virket mer tungvindt for min del!

 

Fullt mulig det ikke er good practice, men ikke det spørsmål mitt gikk ut på!!

 

Utenom at Manfred oppfører seg på en måte som kun går an på et internettforum, vil jeg si meg helt enig med han.

 

Å lagre dato/klokkeslett i tekstfelter er rimelig idiotisk.

 

Du skulle heller ha lagret som dato med tid og brukt funksjoner til å transformere dataene til det du trenger der og da.

 

De tre første treffene på dette google søket skulle være sånn ca det du trengte:

http://www.google.no/search?q=access+date+time+functions

 

Direktelinker

http://www.alvechurchdata.co.uk/accdate.htm

http://support.microsoft.com/kb/210604

http://www.mvps.org/access/datetime/date0007.htm

 

Hvis du hadde det lagret som dato kunne du da ha brukt funksjonen for å extracte f.eks måned og år fra en dato og gruppert på denne.

Endret av blackbrrd
Lenke til kommentar

I alle databaser lagrer du dato og tid i det innebygde datetime formatet, et triks jeg har lært meg er å skrive datoer på engelsk form med # rundt som #1/21/2007#

Spøringen for å hente ut et dato spenn vil da bli" where dato>=#11/15/2008# and dato<=#11/16/2008# "

du vil da hente aller record hvor dato er 15.11 eller 16.11

Om du kun ønsker å lagre tid, ikke dato, vil jeg nesten anbefale å lagre datetime med fast dato, i et eget felt set dato til å være fks 1.1.2000, så setter du tiden som 11:34:57 og lagrer denne datetime.

Da er det lett å hente ut.

Lenke til kommentar
I alle databaser lagrer du dato og tid i det innebygde datetime formatet, et triks jeg har lært meg er å skrive datoer på engelsk form med # rundt som #1/21/2007#

Spøringen for å hente ut et dato spenn vil da bli" where dato>=#11/15/2008# and dato<=#11/16/2008# "

Det du sier her er MS Access spesifikt. Nå er det jo dette trådstarter bruker, men du fikk det til å høres ut som et triks som gjelder alle databaser.

Trikset er egentlig å ikke bygge opp strenger som inneholder de spesifikke verdier, men å bruke parameteriserte spørringer. Da trenger du ikke å bekymre deg om slike trivielle problemer siden ODBC/OLE-DB driveren håndterer parameterverdiene.

Lenke til kommentar
I alle databaser lagrer du dato og tid i det innebygde datetime formatet, et triks jeg har lært meg er å skrive datoer på engelsk form med # rundt som #1/21/2007#

Spøringen for å hente ut et dato spenn vil da bli" where dato>=#11/15/2008# and dato<=#11/16/2008# "

du vil da hente aller record hvor dato er 15.11 eller 16.11

Om du kun ønsker å lagre tid, ikke dato, vil jeg nesten anbefale å lagre datetime med fast dato, i et eget felt set dato til å være fks 1.1.2000, så setter du tiden som 11:34:57 og lagrer denne datetime.

Da er det lett å hente ut.

 

Kan jeg bare bruke # rundt dato dersom dato er av engelsk format? Eller fungerer det også med norsk format?

Lenke til kommentar

Har prøvd meg litt frem med det som magnemoe sa angående DatoTid. Jeg får ikke lagret #18/11/2008/# 13:46 i DatoTid feltet. Og dersom jeg skal ha #18/11/2008 13:46# så er jeg like langt med at jeg må splitte opp resultat jeg får ut av queryen.

 

Noen som har noen innspill?

Lenke til kommentar
I alle databaser lagrer du dato og tid i det innebygde datetime formatet, et triks jeg har lært meg er å skrive datoer på engelsk form med # rundt som #1/21/2007#

Spøringen for å hente ut et dato spenn vil da bli" where dato>=#11/15/2008# and dato<=#11/16/2008# "

du vil da hente aller record hvor dato er 15.11 eller 16.11

Om du kun ønsker å lagre tid, ikke dato, vil jeg nesten anbefale å lagre datetime med fast dato, i et eget felt set dato til å være fks 1.1.2000, så setter du tiden som 11:34:57 og lagrer denne datetime.

Da er det lett å hente ut.

 

Har nå gjort som du sa å satt et felt i databasen som heter Dato_Tid, men får ikke lenger hentet ut querys på enten bare dato eller bare tid. Prøver med denne queryen: SELECT * FROM Henvendelse WHERE (Dato_Tid LIKE #21/11/2008#)

 

Hva er feil her? Hvordan kan jeg få ut bare Dato eller bare tid?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...