tasle Skrevet 16. september 2004 Del Skrevet 16. september 2004 Jasså, er det her man gjør leksene for andre ? Lenke til kommentar
kaffenils Skrevet 16. september 2004 Del Skrevet 16. september 2004 Round(Number, NumDigitsAfterDecimal) Forresten så er det lurt å bruke Currency når det er snakk om cash (currency er 64 bit, altså kan det inneholde et statsbudsjett eller fjorten) Av en eller annen syk grunn som jeg ikke forstår så fungerer Round funksjonen helt merkelig. F.eks så gir round(2.565,2) verdien 2.56 , mens det burde vært 2.57. Round(2.555,2) gir korrekt 2.55. Round(2.545,2) gir 2.54 som er feil... osv... osv... Jeg har faktisk vært nødt til å lage (eller rettere sagt, fant den på nettet) en egen avrundingsfunksjon for å få korrekte resultater. Her er den hvis noen ønsker den: Public Function Round( _ ByVal Number As Variant, Optional NumDigits As Long = 0, _ Optional UseBankersRounding As Boolean = False) As Double ' ' --------------------------------------------------- ' From "Visual Basic Language Developer's Handbook" ' by Ken Getz and Mike Gilbert ' Copyright 2000; Sybex, Inc. All rights reserved. ' --------------------------------------------------- ' Dim dblPower As Double Dim varTemp As Variant Dim intSgn As Integer If Not IsNumeric(Number) Then ' Raise an error indicating that ' you've supplied an invalid parameter. Err.Raise 5 End If dblPower = 10 ^ NumDigits ' Is this a negative number, or not? ' intSgn will contain -1, 0, or 1. intSgn = Sgn(Number) Number = Abs(Number) ' Do the major calculation. varTemp = CDec(Number) * dblPower + 0.5 ' Now round to nearest even, if necessary. If UseBankersRounding Then If Int(varTemp) = varTemp Then ' You could also use: ' varTemp = varTemp + (varTemp Mod 2 = 1) ' instead of the next If ...Then statement, ' but I hate counting on TRue == -1 in code. If varTemp Mod 2 = 1 Then varTemp = varTemp - 1 End If End If End If ' Finish the calculation. Round = intSgn * Int(varTemp) / dblPower End Function Lenke til kommentar
Jonas Skrevet 16. september 2004 Del Skrevet 16. september 2004 Men du kaffenils .. Er det ikke slik at 5 rundes av til 0, mens 5.00001 rundes opp til 10 ? Lenke til kommentar
kaffenils Skrevet 16. september 2004 Del Skrevet 16. september 2004 Men du kaffenils .. Er det ikke slik at 5 rundes av til 0, mens 5.00001 rundes opp til 10 ? Det korrekte er at 2.5 rundes opp til 3, mens 2.49999999999 rundes ned til 2. Round funskjonen i VB gjør rett i "annenhver" avrunding. Lenke til kommentar
Moskus Skrevet 16. september 2004 Del Skrevet 16. september 2004 Det korrekte er at 2.5 rundes opp til 3, mens 2.49999999999 rundes ned til 2. Round funskjonen i VB gjør rett i "annenhver" avrunding. Hva mener du med "gjør rett"? Eksempelet ditt er jo korrekt. Lenke til kommentar
jajajalla Skrevet 17. september 2004 Del Skrevet 17. september 2004 Den interne funksjonen CInt konverterer til datatypen Integer, mens Val returnerer Double. Begge disse datatypene holder tall, og med mindre du helt klart ikke ønsker høyre tall enn 32768 eller mindre enn -32768, er ikke dette nødvendig. Integer kan, som navnet tilsier, ikke holde annet en heltall. Må bare pirke litt En integer går faktisk bare opp til 32767, mens den går helt ned til -32768. Lenke til kommentar
Tr1llobite Skrevet 17. september 2004 Del Skrevet 17. september 2004 Den interne funksjonen CInt konverterer til datatypen Integer, mens Val returnerer Double. Begge disse datatypene holder tall, og med mindre du helt klart ikke ønsker høyre tall enn 32768 eller mindre enn -32768, er ikke dette nødvendig. Integer kan, som navnet tilsier, ikke holde annet en heltall. Må bare pirke litt En integer går faktisk bare opp til 32767, mens den går helt ned til -32768. Er det 16 bits integers i vb nå også? Ikke rart jeg ikke liker det... Lenke til kommentar
kaffenils Skrevet 17. september 2004 Del Skrevet 17. september 2004 Det korrekte er at 2.5 rundes opp til 3, mens 2.49999999999 rundes ned til 2. Round funskjonen i VB gjør rett i "annenhver" avrunding. Hva mener du med "gjør rett"? Eksempelet ditt er jo korrekt. Les det første innlegget mitt, eller prøv dette i Immediate Window: ? round(2.5) 2 ? round(3.5) 4 Ser du ikke feilen? Lenke til kommentar
x871kx6167ss7 Skrevet 18. september 2004 Forfatter Del Skrevet 18. september 2004 (endret) Nå kommer sansynligvis mine siste problemer...: 1. Jeg skal beregne Lån, annuitets og Serielån... Annuitetslån er pmt... så det er ikke noe problem. Men For Serielån kan jeg ikke noen kommando! Finnes det noen innebygde? 2. Problem... Jeg vil gjerne ha en startoppscreen... Den skal være en egen form. Og skal vises i tre sek før det kommer over til den vanlige formen... Hilsen Peter! Endret 18. september 2004 av Blackslash Lenke til kommentar
x871kx6167ss7 Skrevet 18. september 2004 Forfatter Del Skrevet 18. september 2004 (endret) Beklager dobbelpost! Endret 18. september 2004 av Blackslash Lenke til kommentar
Jonas Skrevet 18. september 2004 Del Skrevet 18. september 2004 (endret) Jeg vet ikke hvordan du har lyst til å beregne et lån, men dette er jo nesten ikke vb. Bare matte! dim lån, rente 'rente er 20% lån = 200000 rente = (lån / 100) * 20 msgbox rente Skal du ha load screen kan du bruke en vanlig "Timer" satt på 3000 interval. Form2.show unload me Endret 22. september 2004 av Jonas Lenke til kommentar
x871kx6167ss7 Skrevet 23. september 2004 Forfatter Del Skrevet 23. september 2004 Hei! Nå skal jeg snart levere tilbake prosjektet... Dere kan se resultatet når det er ferdig! Jeg bruker form1.print eller noe slikt noe... Men dersom jeg ikke har koblet til skriver kommer feilmelding hvor de står prineter error... Hvor dan kan man fikse denne feilen? Lenke til kommentar
x871kx6167ss7 Skrevet 23. september 2004 Forfatter Del Skrevet 23. september 2004 Nå er programmet ferdig! Jeg greide å løse den siste feile selv... iBudget.exe Lenke til kommentar
Jonas Skrevet 23. september 2004 Del Skrevet 23. september 2004 Jeg trykka på Print-knappen og fikk feilmedling, men utskriften kom. Så bør du rydde litt. F eks alle trinnene under hverandre, og resultatet ved siden av. Lenke til kommentar
aadnk Skrevet 23. september 2004 Del Skrevet 23. september 2004 Slik som programmet er designet nå, kunne du fått alt mer oversiktlig ved å sette de forksjellige trinnene i hvert sin form. Dette er også løsningen mangen andre programmer bruker, og viser seg å være den mest brukervennlige. Eneste ulempen er en litt mer tidskrevene prosess for de mer erfarne. Jeg opplevde også endel problemer med programmet; det klikket, og flere ting fungerte ikke helt skikkelig. Jeg vil anbefale deg å se over koden igjen, eventuelt legge den ut her. Lenke til kommentar
x871kx6167ss7 Skrevet 23. september 2004 Forfatter Del Skrevet 23. september 2004 Her er scriptet... Det er sikkert masse feil og dritt og unødvendigheter... VB.txt Lenke til kommentar
d0ppler Skrevet 23. september 2004 Del Skrevet 23. september 2004 velkommen til VB-verdenen Blackslash, og jeg anbefaler deg til å ta en tiit på denne Innføring i fornuftig formatering av kode i VB Lenke til kommentar
x871kx6167ss7 Skrevet 29. september 2004 Forfatter Del Skrevet 29. september 2004 (endret) Oki... fikk utsetetlse og jeg har bare tenkt til å rette en ting til, feilen når man skriver ut.... Her er koden: Når formen loader: DIm baha On error goto baha form.printform baha: svar = msgbox("*Meldingen) Unload me End sub Alt står i riktig rekkefølge... men det er nok en del ting som ikke er riktig fordi jeg ikke har det foran meg akkurat nå... Hva er det jeg må gjøre om?' Dersom dere må ha den eksakte koden må dere bare si ifra! Endret 29. september 2004 av Blackslash Lenke til kommentar
Jonas Skrevet 29. september 2004 Del Skrevet 29. september 2004 PrintForm funker fint her. Post koden din her, så kan jeg se på den Lenke til kommentar
x871kx6167ss7 Skrevet 29. september 2004 Forfatter Del Skrevet 29. september 2004 Men du sa jo at det kom en feil melding når jeg skrev den ut... Selv om det gikki greit... Så koden for hele utskrifts-dingebomsen er: Dim baha Dim svar Private Sub form1_load() On error GoTo baha form1.print form baha: svar = msgbox(Meldinge) End sub 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å