Hej!
Jag har ett problem som jag tror det måste finnas en "vacker" lösning på istället för de fula som jag kommer på.
Användaren matar in data i en gridkomponent (flexgrid från componentone, men det spelar mindre roll). Svenska inställningar användes, vilket innebär att kommatecken är decimalavgränsare.
Nu skall värdena från gridkomponenten sparas. Detta gör med
GetDatametoden
på instansen av griden som i mitt fall heter:
grdMissiv.
Användaren kan antingen skrivit in ett decimaltal eller tagit bort ett värde (det blir då tom sträng). Eftersom jag inte vet detta i förväg kan jag inte tilldela värdet direkt till en variabel. Mitt huvudproblem är att i SQL så måste man ha punkt som decimalavgränsare.
Låt oss anta att användaren matar in 214,5
Dim sAmount as string
Dim sngAmount as Single
If grdMissiv.GetData(grdMissiv.Row, 8) Is Nothing Then
sAmount = "NULL"
Else
If grdMissiv.GetData(grdMissiv.Row, 8) = "" Then
sAmount = "NULL"
Else
sngAmount = grdMissiv.GetData(grdMissiv.Row, 8) ' Blir nu 214.5 vilket är korrekt
sAmount=sngAmount ' Men när jag konverterar detta till en sträng blir strängen
'återigen 214,5 vilket skapar fel i SQL-frågan
End If
End if
ssql="UPDATE TMissiv SET PaidAmount=" & sAmount
...
Om jag var säker på att det alltid fanns ett värde i datagriden skulle jag förstås kunna läsa in värdet direkt utan att kontrollera om det var en tom sträng. I förlängningen skulle jag då använda
ssql="UPDATE TMissiv SET PaidAmount=" & sngAmount
istället.
Hoppas det finns någon som förstår mitt problem.
- En ful lösning går ut på att replaca kommatecken med punkt i strängen
- En annan ful lösning går ut på att switcha mellan olika cultures (svensk/engelsk)
...men jag tycker att MS borde insett den här problematiken och det därför borde finnas bättre sätt än att gå loss på strängar...