enden Skrevet 18. desember 2009 Del Skrevet 18. desember 2009 (endret) Jeg har en database hvor tid er registrert som minutter i en tabell. I en rapport (Reporting Services) skal jeg hente sum av minutter for utvalget, og kunne tenke meg å presentere dette som hh:mm. Jeg kan ikke se at jeg har så mange muligheter til å formatere dette i selve rapporten ut over å eventuelt bruke DateAdd() dersom det er mulig. Jeg må innrømme at mulighetene der går litt over hodet mitt på kvelden. Alternativet er å få verdien ferdig ut av spørringen. Noen som klarer å hjlepe meg med et uten å bygge en egen funksjon eller prosedyre inn i databasen? Endret 18. desember 2009 av enden Lenke til kommentar
quantum Skrevet 19. desember 2009 Del Skrevet 19. desember 2009 (endret) Bruk Modulo (og gjerne google) http://msdn.microsoft.com/en-us/library/ms190279.aspx http://msdn.microsoft.com/en-us/library/ms175009.aspx Gitt at du har f.eks. 231 minutter select 231 / 60 as timer, 231 % 60 as minutter Forutsetter at delingen av heltall runder nedover slik det ser ut som i flg. dokumentasjonen (If an integer dividend is divided by an integer divisor, the result is an integer that has any fractional part of the result truncated.) I motsatt fall blir det isteden select (231 - (231 % 60)) / 60 as timer, 231 % 60 as minutter ... hva som er tilfelle får jeg ikke verifisert. Endret 19. desember 2009 av quantum Lenke til kommentar
enden Skrevet 19. desember 2009 Forfatter Del Skrevet 19. desember 2009 Det ser ut til at du har rett i første eksempel ja. Har ikke testet det grundig enda, men basert på et tilfeldig utvalg så det korrekt ut. Jeg har bare litt formatpirk. Verdier under 10 representeres med enkelttall og ikke 0x. Er det enkelt å få til? Lenke til kommentar
kaffenils Skrevet 20. desember 2009 Del Skrevet 20. desember 2009 Det ser ut til at du har rett i første eksempel ja. Har ikke testet det grundig enda, men basert på et tilfeldig utvalg så det korrekt ut. Jeg har bare litt formatpirk. Verdier under 10 representeres med enkelttall og ikke 0x. Er det enkelt å få til? Formattering er en jobb for presentasjonslaget, ikke databasen. Sjekk ut Format funksjonen eller Format egenskapen til TextBox. Lenke til kommentar
quantum Skrevet 20. desember 2009 Del Skrevet 20. desember 2009 (endret) Formattering er en jobb for presentasjonslaget, ikke databasen. Sjekk ut Format funksjonen eller Format egenskapen til TextBox. Modulo-kalkulasjonen kan du også med fordel gjøre som en del av presentasjonen, så blir det bare en verdi og ikke to å holde styr på ellers omkring i koden. Men det er kanskje knotete å få til i rapporteringsverktøyet? Endret 20. desember 2009 av quantum Lenke til kommentar
enden Skrevet 20. desember 2009 Forfatter Del Skrevet 20. desember 2009 Nja, jeg fikk til Modulo-kalkulasjonen greit nok bare jeg fant korrekt notasjon. Jeg er forøvrig helt enig i at dette er en jobb for presentasjon, ikke database. Kjekt å vite at man faktisk kan gjøre ganske mye med uttrykkene i selve rapporten Formateringen er litt værre. Textboxen består nå av =Fields!minutterBrukt.Value \ 60 & ":" & Fields!minutterBrukt.Value Mod 60 Tallformateringen til Textbox ser ikke ut til å bite på output fra dette. Skal leke litt mer med hva jeg skal spytte ut for å få tallformateringen til å fungere, for der finnes der ferdig format for hh:mm. Må bare være litt sammen med familien først Hvis noen har tips til meg er det bare å pøse på! Lenke til kommentar
blackbrrd Skrevet 20. desember 2009 Del Skrevet 20. desember 2009 (endret) Har bare forslag for postgres sin løsning, tipper du kommer langt med det du har fått her allerede select to_char(231*'1 minute'::interval, 'HH24:MI') For rapporter eller andre plasser hvor jeg ikke skal gjøre noe mer med dataene synes jeg databasen er riktig sted å gjøre formateringen. Databasen sine funksjoner for dette er gjerne rimelig overlegne på dette feltet (ytelse/minnebruk). Endret 20. desember 2009 av blackbrrd Lenke til kommentar
quantum Skrevet 20. desember 2009 Del Skrevet 20. desember 2009 Har bare forslag for postgres sin løsning, tipper du kommer langt med det du har fått her allerede select to_char(231*'1 minute'::interval, 'HH24:MI') For rapporter eller andre plasser hvor jeg ikke skal gjøre noe mer med dataene synes jeg databasen er riktig sted å gjøre formateringen. Databasen sine funksjoner for dette er gjerne rimelig overlegne på dette feltet (ytelse/minnebruk). Hehe, ikke akkurat best-practice, men når man bruker et rapporteringsverktøy så blir det jo gjerne slik, for rapportdefinisjonen inneholder jo gjerne både layout og spørring i en og samme bundle. Hvordan en implementasjon av en funksjon a'la to_char kan bli så veldig mye mer effektiv når den kjører i databasen enn i f.eks. webserveren(php) er dog for meg en gåte ... Lenke til kommentar
blackbrrd Skrevet 20. desember 2009 Del Skrevet 20. desember 2009 Databasemetoder er gjerne bedre optimalisert enn tilsvarende metoder i PHP, Java, e.l. BigDecimal håndteringen i java er f.eks vesentlig tregere enn tilsvarende implementasjon i Postgres (med numeric). Lenke til kommentar
quantum Skrevet 20. desember 2009 Del Skrevet 20. desember 2009 Databasemetoder er gjerne bedre optimalisert enn tilsvarende metoder i PHP, Java, e.l. BigDecimal håndteringen i java er f.eks vesentlig tregere enn tilsvarende implementasjon i Postgres (med numeric). Hadde de brukt postgres i køben hadde de nok fått til en orntli klimaavtale også. Helt sikkert. Lenke til kommentar
quantum Skrevet 20. desember 2009 Del Skrevet 20. desember 2009 Jeg har bare litt formatpirk. Verdier under 10 representeres med enkelttall og ikke 0x. Er det enkelt å få til? Er du egentlig sikker på at du vil ha padding? Det er jo ikke klokkeslett dette. Lenke til kommentar
blackbrrd Skrevet 21. desember 2009 Del Skrevet 21. desember 2009 (endret) Databasemetoder er gjerne bedre optimalisert enn tilsvarende metoder i PHP, Java, e.l. BigDecimal håndteringen i java er f.eks vesentlig tregere enn tilsvarende implementasjon i Postgres (med numeric). Hadde de brukt postgres i køben hadde de nok fått til en orntli klimaavtale også. Helt sikkert. WTF? Jeg har bare litt formatpirk. Verdier under 10 representeres med enkelttall og ikke 0x. Er det enkelt å få til? Er du egentlig sikker på at du vil ha padding? Det er jo ikke klokkeslett dette. Han har lyst på det, prøv å få deg et kjappt overblikk tid skrevet ut uten padding: 13:12 1:1 12:9 7:12 20:1 Med padding - kanskje litt lettere å lese? 13:12 01:01 12:09 07:12 20:01 Endret 21. desember 2009 av blackbrrd Lenke til kommentar
kaffenils Skrevet 21. desember 2009 Del Skrevet 21. desember 2009 Nja, jeg fikk til Modulo-kalkulasjonen greit nok bare jeg fant korrekt notasjon. Jeg er forøvrig helt enig i at dette er en jobb for presentasjon, ikke database. Kjekt å vite at man faktisk kan gjøre ganske mye med uttrykkene i selve rapporten Formateringen er litt værre. Textboxen består nå av =Fields!minutterBrukt.Value \ 60 & ":" & Fields!minutterBrukt.Value Mod 60 Tallformateringen til Textbox ser ikke ut til å bite på output fra dette. Skal leke litt mer med hva jeg skal spytte ut for å få tallformateringen til å fungere, for der finnes der ferdig format for hh:mm. Må bare være litt sammen med familien først Hvis noen har tips til meg er det bare å pøse på! Prøv: (Fields!minutterBrukt.Value \ 60).ToString("00") & ":" & (Fields!minutterBrukt.Value Mod 60).ToString("00") Lenke til kommentar
enden Skrevet 21. desember 2009 Forfatter Del Skrevet 21. desember 2009 Prøv: (Fields!minutterBrukt.Value \ 60).ToString("00") & ":" & (Fields!minutterBrukt.Value Mod 60).ToString("00") Det fjernet faktisk data i stedet for å legge til padding 10:50 ble til 1:5 mens 0:0 ikke ble endret Lenke til kommentar
kaffenils Skrevet 21. desember 2009 Del Skrevet 21. desember 2009 Prøv: (Fields!minutterBrukt.Value \ 60).ToString("00") & ":" & (Fields!minutterBrukt.Value Mod 60).ToString("00") Det fjernet faktisk data i stedet for å legge til padding 10:50 ble til 1:5 mens 0:0 ikke ble endret Sannsynligvis datatypekluss. Prøv denne: =System.Convert.ToInt32(Floor(Fields!minutterBrukt.Value / 60)).ToString("00") & ":" & system.Convert.ToByte(Fields!minutterBrukt.Value mod 60).ToString("00") Lenke til kommentar
enden Skrevet 21. desember 2009 Forfatter Del Skrevet 21. desember 2009 Der har vi den! Hjertlig takk Lenke til kommentar
quantum Skrevet 21. desember 2009 Del Skrevet 21. desember 2009 Med padding - kanskje litt lettere å lese? 13:12 01:01 12:09 07:12 20:01 Utvilsomt mer lesbart, pointet mitt var dårlig formulert, tenkte det kanskje var et poeng å formatere så det ikke ser ut som klokkeslett. Ikkeno stort poeng, dog ... Lenke til kommentar
kaffenils Skrevet 21. desember 2009 Del Skrevet 21. desember 2009 Utvilsomt mer lesbart, pointet mitt var dårlig formulert, tenkte det kanskje var et poeng å formatere så det ikke ser ut som klokkeslett. Ikkeno stort poeng, dog ...Må si meg enig med deg quantum. Det kan forvirre brukeren til å forvejklse med et tidspunkt.Bedre å skrive f.eks. 08h44m, eller i klartekst 8 hours and 44 minutes. Men nå skal ikke jeg drive å leke belærende. TS velger selv. Lenke til kommentar
enden Skrevet 21. desember 2009 Forfatter Del Skrevet 21. desember 2009 Jo, jeg har sett den, men formateringen er en smal sak å endre dersom sjefen er enig. Fordelen med et enkelt skilletegn er plass, noe jeg har lite av slik rapportene er utformet. Kan selvfølgelig endre det fra kolon til noe annet, men tar jeg når rapportene ellers er ferdige. 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å