-3

値が0.00のテキストボックスがあり、変換中にエラーが発生しました...しかし、テキストボックスからではなく0.00を使用して例を作成しましたが、機能しています。この問題を修正するにはどうすればよいですか。

    Dim _Total, _Deduct, _Charges As String
    Dim _sss, _tax, _pf, _ph, _loan, _others, _hdmf, _cola, _allowance As Decimal

テキストボックスとコメントの場合、この行は機能しています。しかし、私はこれを使用しています。

    _sss = txtSSS.Text : _ph = txtPH.Text : _tax = txtInTax.Text : _pf = txtPF.Text
    _loan = txtLoan.Text : _hdmf = txtHDMF.Text : _others = txtOther.Text
    _cola = txtCola.ToString : _allowance = txtAllowance.ToString

この行は私の与えられた例の値です...同じ値ですが、テキストボックスが機能していません..そしてこれは機能しています

    'This code when I uncomment.. this work..
    '_sss = "0.00": _ph = "0.00" : _tax = "0.00" : _pf = "0.00"
    '_loan = "0.00" : _hdmf = "50.00" : _others = "0.00"
    '_cola = "0.00" : _allowance = "0.00"

    _Charges = CDec(_cola) + CDec(_allowance)
    _Deduct = CDec(_sss) + CDec(_tax) + CDec(_pf) + CDec(_ph) + CDec(_loan) + CDec(_hdmf) + CDec(_others)

    _Total = CDec(_Charges) - CDec(_Deduct)

    lblDeduct.Text = Format((_Deduct), "currency")
    lblTotal.Text = FormatCurrency((_Total), 2, TriState.True, TriState.False, TriState.True)
4

1 に答える 1

1

Decimal.TryParseを使用します。

<!-- language : lang-vb -->
If Not Decimal.TryParse(txtSSS.Text, _sss) Then
    ' do something if the value doesn't convert
End If

あなたのコメントに基づいて、あなたのコードで遊んで、これがうまくいくかどうかを確認してください (私はデフォルトで 0 を使用しました)。オンになっていない場合はOption Strict、オンにしてください。

上記のOption Strictリンクから:

暗黙的なデータ型変換を拡張変換のみに制限し、遅延バインディングを禁止し、Object 型になる暗黙的な型指定を許可しません。

Private Sub CalculateCurrency()
    If Not Decimal.TryParse(txtSSS.Text, _sss) Then _sss = 0D
    If Not Decimal.TryParse(txtPH.Text, _ph) Then _ph = 0D
    If Not Decimal.TryParse(txtInTax.Text, _tax) Then _tax = 0D
    If Not Decimal.TryParse(txtPF.Text, _pf) Then _pf = 0D
    If Not Decimal.TryParse(txtLoan.Text, _loan) Then _loan = 0D
    If Not Decimal.TryParse(txtHDMF.Text, _hdmf) Then _hdmf = 0D
    If Not Decimal.TryParse(txtOther.Text, _others) Then _others = 0D
    If Not Decimal.TryParse(txtCola.Text, _cola) Then _cola = 0D
    If Not Decimal.TryParse(txtAllowance.Text, _allowance) Then _allowance = 0D

    _Charges = CStr(_cola + _allowance)

    _Deduct = CStr(_sss + _tax + _pf + _ph + _loan + _hdmf + _others)

    _Total = CStr(CDec(_Charges) - CDec(_Deduct))

    lblDeduct.Text = Format((_Deduct), "currency")
    lblTotal.Text = FormatCurrency((_Total), 2, TriState.True, TriState.False, TriState.True)
End Sub
于 2012-07-16T02:23:43.510 に答える