这是我在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"""
所以我正在读取值,然后将它们分配给摩托车和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作为v.getType()时,VS2010将v报告为字符串/ system.string。我甚至尝试在integer.tryParse(“417”,ret)中调试传递,这可行,但由于某种原因它不与v参数。
我也尝试过integer.tryParse(v.toString,ret),这也不起作用。
所以有人能指出我正确的方向,请问如何克服这个问题,因为CInt似乎不起作用(VBscript接地,对不起!)
非常感谢提前! 格雷厄姆
答案 0 :(得分:0)
好的,可以公平地说,我在vbscript中的传统在这个问题中得到了体现。
当运行并调试代码并检查v的值时,我认为“417”被传入,我注意到实际传入的值是“417”,带有额外的空间。
当然在vbscript中我很确定会自动进行修剪。因此,在调用函数时修剪字符串实际上会返回一个双倍的预期。
不要笑,我意识到我是一块木板!
如果你看了谢谢, 格雷厄姆