Det virker fint nok men jeg vil gerne lære noget mere. Jeg sidder med en lærebog; den siger noget om at man kan anvende eks. FormatDateTime (vbShortTime) til at formattere sin tid. Hvis man tager udgangspunkt i at alle tider er indtastet 1/100 (altså 17.30 = 17.50)og den SQL sætning der udskriver tiden ser således ud; SELECT SUM(timer) AS sumTimer FROM timer" har bogen så ret i at man kan sådan? Jeg har for sjov skyld prøvet man kan ike få det til at virke. det skulle også være muligt at "caste" et numerisk udtryk men man er meget nærig med eksempler. Så derfor; er bogen fuld af p*s eller kan det lade sig gøre?
Hvad siger din bog at feltet timer har som type? Hvis det er et "tids-komma-tal", hvor 17.50 svarer til en halv time før "Fjernsyn for dig", så burde det virke.
Ja det siger den ingenting om, en skøjter sådan bare hen over emnet og påstår at sådan er det. Mit felt er sat til tal og ikke dato / tid netop af hensyn til de beregninger jeg ville lave. Som du kan se i den tråd jeg referere til så forsøgte vi med datediff men så kan jeg ikke få en sum ud af det. Som det er nu kan jeg få en sum som jeg så godt kunne tænke mig at formattere. Den kode eagleeye viser er ok, det kan godt bruges men som sagt kunne jeg tænke mig at lære lidt mere. Og det ville jo også se elegant ud med det rigtige format eks 67:30 i sum altså.
hvis du har et tal me summen i kan du formatere det selv med et par funktioner:
timetal = 67.5 'kan komme fra en sum i et recordset
stime = int(timetal) 'Antal timer smin = (timetal-stime) * 60 'Antal minutter ganger med 60 for at fjerne kommaet smat konverter 1/100 dele til minutter (100*60/100) if len(""&stime) = 1 then stime = "0" & stime 'Sætter 0 foran enkelt tals time str = stime & ":" & right("0" & smin,2)
Nej det betyder at man ikke kan bruge int omkring prøv at rette int til cint. Det er en MS vbscript fejl som gør Int fejler når man får en bestemt type fra et recordset. Løsninngen er at bruge Cdbl omkring i stedet for: http://support.microsoft.com/default.aspx/kb/195180
Hvis det er er det kode jeg har vist er det nok i denne linie:
Når man får en fejl kode + beskrivelse er det en god ide at prøve at kopier begge dele og søge på google. Men lidt øvelse kan man rimeligt hurtigt finde svaret eller hjælp til svaret.
Jeg skal nok se efter på google - eller i alt fald prøve. Jeg har rettet det til cint og så smider den en fejl i næste linie - Type mismatch. Min kode omkring det ser sådan ud: set objRS = objConn.Execute("SELECT SUM(timer) AS sumTimer FROM timer") timetal = objRS("sumTimer") stime = cint(timetal) 'Antal timer smin = (timetal-stime) * 60 'Antal minutter ganger med 60 for at fjerne kommaet smat konverter 1/100 dele til minutter (100*60/100) if len(""&stime) = 1 then stime = "0" & stime 'Sætter 0 foran enkelt tals time str = stime & ":" & right("0" & smin,2)
og det er denne line smin = (timetal-stime) der laver ballade nu. Men jeg ser da efter om jeg kan hitte rede på det.
Ja man skal havde hel tallet så dur cint som jeg skrev 05/03-2006 18:34:15 ikke da cint runder op hvis komma tals delen er større end 0,5. Så der skal bruges cdbl og så man der sætte int omkring det:
ja nu er jeg ikke så god til at gennemskue dette men jeg håber det kommer hen af vejen. Skal jeg også bruge cdbl her? smin = (timetal-stime)? Den brokker sig nemlig stadigvæk over denne linie
Bingo - men nå jeg så udskriver min sum f.eks. 2 timer 15 min som jo rigtigt nok i sumTimer er 2,25 skriver den : 225:00. Det kunne jeg godt have tænkt mig at det var 2:25? Jeg vil lige prøve at se på din kode igen og se om jeg helt forstår hvad det er du gør
Har også været væk 8>) jeg blev kaldt ud. Jeg kører kurer og hastetransporter og det er faktisk det jeg skal bruge det system til jeg er ved at forsøge mig med. Jeg har min bærbar i bilen og så var det min mening at jeg kan indtaste timeforbrug i en webbrowser når en opgave er færdig. Det virker også godt nok nu men jeg kunne godt tænke mig at få det sidste på plads. Jeg har tænkt over denne : str = stime & ":" & right("0" & smin,2)
her er jeg ikke rigtigt med på hvad det er du gør og jeg formoder svaret på det jeg gerne vil ligger her?
Den laver strengen som skal udskrives i formatet tt:mm.
right("0" & smin,2)
Den sikre at minutter udskrives som to tal. Hvis det giver 5 minuter skal der et nul ind foran så det bliver :05 og ikke bare :5. Derfor sættes der altid et 0 ind foran mintterne: "0" & smin
og right funktionen klipper de 2 karatkter i "0" & smin fra højer mod venstre. Så smin indeholder en karakter bliver den to, indeholder smin to karakter eks "356" så bliver det til "035" men da right kan tager 2 tegn forsvinder det "0" igen så det bliver til "35".
ok - tak! Jeg må lige tænke over det for at se om jeg kan forstå det. Men det kan godt være at det har været for mange timer på landevejen det sidste døgn. Men jeg ser lige på din forklaring. Mine felter i databasen er sat til decimaltal er det mon derfor den viser 2:25 som 225:00? Der er ingen forskel om jeg indtaster 1300 eller 13.00.
Ja det må være fordi den tolker 13.00 som 1300 det er fordi serveren køre DK format og når man skriver 13.00 tror den der er 1000'skille tegn og ikke decimal skille tegn.
Når du indtaster så skal du havde lavet . om til , inden du gemmer i db'en det kan gøres i koden:
Hurra - det virker fandme godt set. Det havde jeg aldrig klaret uden eagleeye
Tusind tak!!!!!!
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.