[VB 6]Getallen in datagrid kolom afronden & formatten

Pagina: 1
Acties:
  • 49 views sinds 30-01-2008

  • fluppie007
  • Registratie: April 2005
  • Laatst online: 28-11 11:17
Beste Allemaal,

Een deel van de waarden die in mijn kolommen voorkomen, komen voort uit expressies ( Access + SQL ). Deze hebben soms 1 cijfer of soms 6 cijfers na de komma. Wat ik nu wil ze zo formatteren dat ze altijd een vorm geven van € 0,00 ( dus een Currency format ).

Dit had ik in gedachte maar dit werkt niet.
[Code=vb]grdDataGrid.Columns("Stukprijs").DataFormat = Format$("€", "#.##")[/Code=vb]


Dan dacht ik aan dit:
[Code=vb]grdDataGrid.Columns("Stukprijs").DataFormat = "Currency"[/Code=vb]


Dit doet het ook niet, ook heb ik al eens zitten zoeken op verscheidene site en kan niet terugvinden hoe ik die dataformat van mijn column aanpas, mss hanteer ik geen goede methode. Nu ben ik eerlijk gezegd beetje ten einde raad. Dus nu hoop ik dat 1 van jullie weet hoe je op een juiste manier
die DataFormat gebruikt van een DataGrid.

PrintScreen van men datagrid:

Afbeeldingslocatie: http://img127.imageshack.us/img127/7829/tabelletjeje7.jpg

Expressies:
Stukprijs = Aankoopprijs*WinstCoëfficient
TotaalExcl = Aankoopprijs*WinstCoëfficient*Aantal
TotaalIncl = Aankoopprijs*WinstCoëfficient*Aantal*(1+(BTWPercentage/100))
BTW = TotaalIncl-TotaalExcl


P.S: Sorry dat ik zoveel topics open de laatste tijd ;)

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Waarom gebruik je Format$ om aan een (ogenschijnlijk) format property dat hoogstwaarschijnlijk een string is iets toe te kennen? Heb je uberhaupt een idee wat format$ doet of doe je maar wat?

Heb je al eens gewoon .Dataformat = "€ #.##" geprobeerd ofzo? En als ik heeeeel even google kom ik voldoende tegen dat je verder moet helpen lijkt me zo. Zo op het eerste gezicht zou het ook nog wel eens een .NumberFormat property kunnen zijn dat je zoekt.

Ik mis overigens of je uberhaupt foutmeldingen krijgt ("dit doet 't niet" is nogal vaag op z'n zachts gezegd... doet het niet wat je wil, doet het helemaal niets, geeft het een error ...etc?)

Ik wil je toch verzoeken een beetje beter je best te doen en wat verder te kijken dan je neus lang is.

[edit]
Nah, paar minuten later en ik heb een test-project met test-code en werkend:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Option Explicit

Private Sub Form_Load()
    Dim rs As Object
    Dim T As Integer
    
    Randomize Timer
    
    Set rs = CreateObject("ADODB.Recordset")    'Recordsetje maken...
    rs.Fields.Append "test", 6                  'Field toevoegen... 6=adCurrency
    rs.Open
    
    For T = 0 To 10                             '10 "Random" records toevoegen
        rs.addnew
        rs.Fields("test") = Rnd * 999
    Next
    Set DataGrid1.DataSource = rs               'Recordsetje koppelen aan datagrid
    
    DataGrid1.Columns(0).NumberFormat = "€ #.##" 'En het numberformat property zetten
                                                'WOEI! ROCKET SCIENCE!
End Sub


In dit voorbeeld gebruik ik een currency field (adCurrency), maar je kent net zo goed een double of whatever gebruiken.

Daarnaast was meteen duidelijk dat het .DataFormat property setten op een stringvalue (zoals ik hierboven suggereer) een duidelijke error oplevert ("Runtime Error 438, Object doesn't support this property or method"); die had je er op z'n minst even bij kunnen vermelden. Als je even de docs was ingedoken had je ook nog gezien dat .DataFormat een StdDataFormat object wil hebben.

Tot slot had je het ook design-time kunnen oplossen door te rechtsklikken op je datagrid, properties en daar bij het tabblad "Format" de juiste kolom op het juiste format type te zetten...


Het is, als je met een project bezig bent, niet de bedoeling dat wij het helemaal samen met jou gaan zitten maken; maar dat begrijp je vast wel ;)

Anyway, kwestie van even zoeken; niet echt een topic waard.

[ Voor 62% gewijzigd door RobIII op 28-12-2006 20:39 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Dit topic is gesloten.