1

这是我第一次尝试在 vb.net 中编写 oop 程序。该程序的基本思想是使用一个excel表作为数据源,然后更新一个mysql数据库。为了实践 OOP 的原则,我创建了一个名为 motorbike 和 FinanceExample 的类型。

我正在使用以下连接字符串,它仅将数据作为文本,因为读取模型 1198 似乎存在问题。

Dim xcelConnString As String = 
    "Provider=Microsoft.Jet.OLEDB.4.0;" _
    & "Data Source=R:\newBikeUpdates\motorcyclesLatest.xls;" _
    & "Extended Properties=""Excel 8.0; IMEX=1"""

所以我正在读取这些值,然后将它们分配给 motorbike 和 financeExample 对象的属性。

有了 vbscript 的基础后,我很快就清楚地知道,数据输入并不像我最初想象的那么容易。因此,我编写了一个函数,该函数将在为属性赋值时返回正确的类型:

motorcycle.category = checkValue(xcelDA("Category")) ' String expected
motorcycle.weight = checkValue(xcelDA("Weight")) 'String passed and Integer should be returned.

所以这里是函数:

Function checkValue(ByVal v As Object)
    Dim ret
    If Not IsDBNull(v) Then
        If Double.TryParse(v, ret) Then
            Debug.WriteLine("v is Double")
            Return ret
        ElseIf Integer.TryParse(v, ret) Then
            Debug.WriteLine("v is an Integer")
            Return ret
        ElseIf v.GetType Is GetType(String) Then
            Debug.WriteLine("v is a string")
            Return CStr(v)
        Else ' Presumption of string type
            Debug.WriteLine("v is Other")
            Return v
        End If
    Else
        Debug.WriteLine("v is DBNull")
        ret = ""
        Return ret
    End If
End Function

并且 string 元素适用于 Category 并返回一个字符串。但是当它开始分配权重值时,我得到一个“417”字符串传入,但 double.tryparse(v,ret) 或 integer.tryparse(v,ret) 元素似乎都不起作用。当使用 debug as v.getType() 时,VS2010 将 v 报告为 string/system.string。我什至尝试过调试传递 integer.tryParse("417",ret) 并且这有效,但由于某种原因它不使用 v 参数。

我也尝试过 integer.tryParse(v.toString,ret) 但这也不起作用。

所以任何人都可以为我指出正确的方向,请告诉我如何克服这个问题,因为 CInt 似乎不起作用(VBscript 接地,抱歉!)

提前谢谢了!格雷厄姆

4

1 回答 1

0

好的,可以公平地说,我在 vbscript 中的传统在这个问题中得到了体现。

在运行和调试代码并在我认为传入“417”时检查 v 的值时,我注意到实际传入的值是“417”,并带有额外的空间。

当然,在 vbscript 中,我很确定会自动进行修剪。因此,在调用函数时修剪字符串实际上会按预期返回双精度值。

别笑,我意识到我是个木板!

如果你看了谢谢,格雷厄姆

于 2013-03-19T12:10:26.717 回答