miXer Skrevet 6. november 2008 Del Skrevet 6. november 2008 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
kaffenils Skrevet 6. november 2008 Del Skrevet 6. november 2008 Den skal hente ut henvendelser fra tabellen Henvendelse for tidspunkt med mest trafikk innenfor de forskjellige Typene Definer "tidsrom". Er tidsrom én time, 30 minutter??? Skal denne perioden rapporteres pr. dag, uke, måned? Lenke til kommentar
miXer Skrevet 7. november 2008 Forfatter Del Skrevet 7. november 2008 (endret) 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 7. november 2008 av miXer Lenke til kommentar
kaffenils Skrevet 7. november 2008 Del Skrevet 7. november 2008 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
miXer Skrevet 7. november 2008 Forfatter Del Skrevet 7. november 2008 Stemmer. Det er akkurat no slikt jeg tenkte på. At spørringen sjekker når på dagen, når i uka, når i måned, og når i året det var mest trafikk. Lenke til kommentar
kaffenils Skrevet 7. november 2008 Del Skrevet 7. november 2008 Hvilken datatype har kolonnene Dato og Tid? Access har kun en datatype for dato/tid og denne lagrer både dato og tid. Hvorfor har du skilt det i to kolonner? Lenke til kommentar
miXer Skrevet 7. november 2008 Forfatter Del Skrevet 7. november 2008 Både Dato og Tid har tekst som datatype. Hadde Dato og Tid i én kolonne med datatype Dato/Klokkeslett før, men da var det vanskelig å hente ut query's på bare tidspunkt eller bare dato. Lenke til kommentar
miXer Skrevet 7. november 2008 Forfatter Del Skrevet 7. november 2008 Jeg tror kanskje jeg greide det selv med denne: SELECT Type, COUNT(Type), Dato FROM Henvendelse GROUP BY Dato, Type HAVING (Dato BETWEEN '3.11.2008' AND '7.11.2008') Kan dette stemme? Lenke til kommentar
Manfred Skrevet 7. november 2008 Del Skrevet 7. november 2008 Både Dato og Tid har tekst som datatype. Hadde Dato og Tid i én kolonne med datatype Dato/Klokkeslett før, men da var det vanskelig å hente ut query's på bare tidspunkt eller bare dato. Lenke til kommentar
miXer Skrevet 10. november 2008 Forfatter Del Skrevet 10. november 2008 Det var et virkelig informativt svar Manfred! Tusen takk. Det hjalp meget! Lenke til kommentar
Manfred Skrevet 10. november 2008 Del Skrevet 10. november 2008 1. Jeg er imponert over at du lagrer dato og tid i hvert sitt tekstfelt 2. Jeg er imponert over at du mener at det er vanskeligere å kjøre spørringer i dette enn i to jalla tekst-felter. Mer informativt? Gå og finn læreboka og les om datofelter, du.. Lenke til kommentar
miXer Skrevet 11. november 2008 Forfatter Del Skrevet 11. november 2008 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
Manfred Skrevet 11. november 2008 Del Skrevet 11. november 2008 Nei, så da er jo det beste alternativet å fortsette med bad practice... Det er jo logisk. Man er ikke her for å lære i alle fall! </ironi> Lenke til kommentar
blackbrrd Skrevet 13. november 2008 Del Skrevet 13. november 2008 (endret) 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 13. november 2008 av blackbrrd Lenke til kommentar
magnemoe Skrevet 16. november 2008 Del Skrevet 16. november 2008 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
kaffenils Skrevet 17. november 2008 Del Skrevet 17. november 2008 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
miXer Skrevet 18. november 2008 Forfatter Del Skrevet 18. november 2008 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
miXer Skrevet 18. november 2008 Forfatter Del Skrevet 18. november 2008 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
miXer Skrevet 21. november 2008 Forfatter Del Skrevet 21. november 2008 Noen kloke hoder her som vet om jeg kan bruke DatoTid feltet til å hente ut BARE dato eller BARE tid når jeg ber om det uten å splitte det i programmet? Lenke til kommentar
miXer Skrevet 25. november 2008 Forfatter Del Skrevet 25. november 2008 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå