Jag har ett konstigt problem som uppträder på 2 Win98 maskiner jag har testat mitt program på men inte på min W2K maskin. Om det har med operativsystemet att göra vet jag inte... Sparar du data via Recordset, Command Objectet eller SQL Sträng. Recordset och Command är okänsligt för Decimal separator. Via recordsetet, såhär: Testa att skriv(antar att fltPris är en textruta?): Men va #¤%¤#%#%#¤! Glad att man är till nån hjälp. Kan faktist göra skilnad vad man skickar till en variant. Lagrar faktist tilldelad datatyp.Decimaltecken VB-ADO-Access
    
    
När jag läser ett värde från databasen (double) till en textbox visas värdet korrekt med , som decimaltecken. Men när jag skriver värdet (med , som decimaltecken) till databasen försvinner decimaltecknet, 5,8 blir 58 osv. Använder jag däremot . som decimaltecken när jag skriver värdet fungerar det utmärkt.
Jag har kollat alla nationella inställningar och det verkar vara korrekt, det blir ju rätt när jag läser ur databasen...
Någon som har någon idé? Jag börjar bli desperat...
/JohanSv: Decimaltecken VB-ADO-Access
    
    
Däremot i SQL Sträng bör du använda en punk.
T.ex
Public Function SQLNumber(Value as Variant) AS String
    If IsNull(Value) Then
        SQLNumber = "Null"
    Else
        SQLNumber = Replace(CStr(Value), Format$(0,"."), ".")
    End If
End Function
Dim strSQL as string
    strSQL = "UPDATE TableName SET FieldName = " & SQLNumber(NewValue) & " WHERE TableName.ID = " & RecIDSv: Decimaltecken VB-ADO-Access
    
    
        With rstTmp
            .Open "SELECT * FROM tblProd WHERE ID = " & lngID, con, adOpenDynamic, adLockOptimistic
            If .EOF Then
                .AddNew
            End If
            .Fields("lngUserID") = ActiveUser
            .Fields("lngProdID") = arrProd(cboProd.ListIndex)
            .Fields("strAnt") = fltAnt
            .Fields("dblAntal") = fltAntal
            .Fields("dblPris") = fltPris
            .Fields("dteDatum") = FormatDateTime(dteDatum, vbShortDate)
            .Fields("lngKundID") = kundID
            .Update
        End WithSv: Decimaltecken VB-ADO-Access
    
    
    Fields("dblPris") = Cdbl(fltPris)
Du bör oxå placerat kod i Validerings eventet för kontroller i vilket man matar in numeriska värden. Exempel:
Private Sub Text1_Validate(Cancel As Boolean)
    If IsNumeric(Text1) Then
        'Ok
    Else
        MsgBox "Var vänlig ange ett numeriskt värde för Text1!"
        Cancel = True
    End If
End Sub
Om du ska tillåta null värde bör du skriva:
Private Sub Text1_Validate(Cancel As Boolean)
    If Len(Text1) Then
        If IsNumeric(Text1) Then
            'Ok
        Else
            MsgBox "Var vänlig ange ett numeriskt värde för Text1!"
            Cancel = True
        End If
    End If
End Sub
    If Len(Text1) Then
        Fields("FieldName") = Cdbl(Text1)
    Else
        Fields("FieldName") = Null
    End ifSv: Decimaltecken VB-ADO-Access
    
    
Det fungerade med CDbl, men jag är helt säker på att jag har testat det innan... Jaja, nu fungerar det i alla fall, TACK!
Jag har givetvis en kontroll av uppgifterna, men tycket inta att det var relevant att ta med den koden här...
/JohanSv: Decimaltecken VB-ADO-Access