Wat niet kan is nog nooit gebeurd
Ik gebruik Format(getal,"General Number") zodra ik ergens een waarde moet toekennen, werkt bij mij prima.
Nothing is fool-proof to a sufficiently talented fool...
Juist, voor weergave is dat perfect.
Nu nog voor het wegschrijven. Access gaat met deze waarden per taalinstelling anders om.
Nu nog voor het wegschrijven. Access gaat met deze waarden per taalinstelling anders om.
Wat niet kan is nog nooit gebeurd
lijkt me stug dat het in text wordt weggeschreven, dat neemt nogal veel overhead in beslag
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Kort voorbeeld:
Werkt altijd in iedere taalinstelling. In VB is de punt altijd het scheidingskarakter, dus het getal kun je zo opgeven. Dankzij de Format snapt de PC bij iedere instelling voor het scheidingskarakter wat je wilt instellen.
code:
1
| Me.Width = Format(2.56,"General Number") |
Werkt altijd in iedere taalinstelling. In VB is de punt altijd het scheidingskarakter, dus het getal kun je zo opgeven. Dankzij de Format snapt de PC bij iedere instelling voor het scheidingskarakter wat je wilt instellen.
Nothing is fool-proof to a sufficiently talented fool...
Aha, ok zal het proberen. THX results morgen, nu eerst maar eens slapen...
Wat niet kan is nog nooit gebeurd
Probeer gewoon
Dus met een punt als scheidingskarakter. Waarom maak je trouwens überhaupt een string aan, die je daarna naar een Double verandert
Je kunt toch gewoon
gebruiken, dus direct in 1x zonder een string te declareren? Scheelt weer wat geheugengebruik, snelheid en vooral moeite.
code:
1
2
3
| Dim s as string s="2.50" Text1.Text=Format(CDbl(s),"General Number") |
Dus met een punt als scheidingskarakter. Waarom maak je trouwens überhaupt een string aan, die je daarna naar een Double verandert
code:
1
| Text1.Text = Format(2.5,"General Number") |
gebruiken, dus direct in 1x zonder een string te declareren? Scheelt weer wat geheugengebruik, snelheid en vooral moeite.
Nothing is fool-proof to a sufficiently talented fool...
Ik krijg de waardes aangeleverd via DAO, deze staan in het formaat van de gebruiker. Dus . of ,
De string in het voorbeeld is puur als voorbeeld.
De string in het voorbeeld is puur als voorbeeld.
Wat niet kan is nog nooit gebeurd
Volgens mij rekent Access in VB altijd met een punt als scheidingsteken, dus als je in de string die je krijgt de eventueel voorkomende komma laat vervangen door een punt ben je er toch ook? Daarna gebruik je CDbl() pas.
Nou werk ik zelf (nog) niet met DAO, dus ik weet niet exact hoe je de waarde binnenkrijgt. Volgens jouw voorbeeld krijg je een string met daarin het cijfer, hierin kun je gelijk zoeken en vervangen. Als je een Double krijgt via DAO, moet je die eerst omzetten naar een String (functie Str()), en daarna bovenvermelde bewerkingen pas uitvoeren.
Ik neem aan dat je niet een string krijgt met punten én komma's erin, anders wordt het iets moeilijker (dan moet je kijken welke van de 2 het meest rechts staat, dat is het scheidingskarakter voor decimalen, de andere voor duizendtallen).
Nou werk ik zelf (nog) niet met DAO, dus ik weet niet exact hoe je de waarde binnenkrijgt. Volgens jouw voorbeeld krijg je een string met daarin het cijfer, hierin kun je gelijk zoeken en vervangen. Als je een Double krijgt via DAO, moet je die eerst omzetten naar een String (functie Str()), en daarna bovenvermelde bewerkingen pas uitvoeren.
Ik neem aan dat je niet een string krijgt met punten én komma's erin, anders wordt het iets moeilijker (dan moet je kijken welke van de 2 het meest rechts staat, dat is het scheidingskarakter voor decimalen, de andere voor duizendtallen).
Nothing is fool-proof to a sufficiently talented fool...
Probleem is dat Access wel deze verschillende scheidingstekens gebruikt. (gebruikers instelling afhankelijk)
Ik moet op de een of andere manier, de globale instellingen hievan op kunnen vragen.
Ik moet op de een of andere manier, de globale instellingen hievan op kunnen vragen.
Wat niet kan is nog nooit gebeurd
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| Public Function Makepoint(tmp) As String
Dim tmpStr As String
Dim t As Integer
For t = 1 To Len(tmp)
If (Mid(tmp, t, 1) <> ",") Then
tmpStr = tmpStr & Mid(tmp, t, 1)
Else
tmpStr = tmpStr & "."
End If
Next
Makepoint = tmpStr
End Function |
Hiermee zet je heel makkelijk die hatelijke , van je om in een .. Dan moet je je niks van die general format in Nederland en andere landen aantrekken.
Lijkt me een goede optie ja,
thx
Toch raar dat het zo "moeilijk" moet.
thx
Toch raar dat het zo "moeilijk" moet.
Wat niet kan is nog nooit gebeurd
Kun je toch ook zo doen?
Visual Basic:
1
2
3
| Dim s as string s="2.50" Text1.Text=Format(CDbl(replace(s,",","."),"General Number") |
[mierenneuk modes]
er mist nog een sluithaak
[/mierenneuk modes]
Ik maak nu gewoon een test tabel waarin een double staat. Deze bevat het juiste scheidingsteken die ik nu dus gewoon kan ophalen.
er mist nog een sluithaak
[/mierenneuk modes]
Ik maak nu gewoon een test tabel waarin een double staat. Deze bevat het juiste scheidingsteken die ik nu dus gewoon kan ophalen.
Wat niet kan is nog nooit gebeurd
Ja klopt helemaal, check dit:boppert schreef op 11 November 2002 @ 15:13:
Kun je toch ook zo doen?
Visual Basic:
1 2 3 Dim s as string s="2.50" Text1.Text=Format(CDbl(replace(s,",","."),"General Number")
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| Private Sub Command1_Click() Dim cnnDB As ADODB.Connection Set cnnDB = New ADODB.Connection cnnDB.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & App.Path & "\db1.mdb" Dim s As Double Dim rsTST As New ADODB.Recordset Dim strSQL As String strSQL = "SELECT * FROM tblTest" Set rsTST = cnnDB.Execute(strSQL) s = CDbl(rsTST.Fields(0)) Text1.Text = s cnnDB.Close Set cnnDB = Nothing End Sub Private Sub Command2_Click() Dim cnnDB As ADODB.Connection Set cnnDB = New ADODB.Connection cnnDB.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & App.Path & "\db1.mdb" Dim s As Double Dim rsTST As New ADODB.Recordset Dim strSQL As String s = Val(Replace(Text2.Text, ",", ".")) strSQL = "INSERT INTO tblTest VALUES( " & Replace(s, ",", ".") & ")" Set rsTST = cnnDB.Execute(strSQL) cnnDB.Close Set cnnDB = Nothing End Sub |
Werkt nu goed.
Thx voor het mee denken
Wat niet kan is nog nooit gebeurd
Pagina: 1