你有几个问题与此代码。除了由杰里米提到的几点:
什么Long
在VB6现在在VB.NET Integer
。 Long
现在是64位整数。
使用System.IO.Path.Combine
为了组合路径字符串。 Combine
会自动添加缺少的反斜杠并删除多余的反斜杠。 Path.Combine(scExportTemplatePath, "scExport.mdb")
该Field
属性不再有一个默认属性。非索引属性绝不是VB.NET中的默认属性。获取.Fields("segmentID").Value
的字段值。
它的值转换为相应的类型:seg = Convert.ToInt32(.Fields("segmentID").Value)
注:VB的Integer
类型只是为System.Int32
的别名。
你总是添加到相同的数组字段。我不知道你在想什么。如果您只想添加一个字段,则可以使用List(Of String)
。如果要为每条记录添加多个字段,则List(Of String())
(即字符串数组列表)将是合适的。列表具有自动增长的优点。
Dim list As New List(Of String())
Do While Not .EOF
Dim values = New String(2) {}
values(0) = Convert.ToString(.Fields("field_A").Value)
values(1) = Convert.ToString(.Fields("field_B").Value)
values(2) = Convert.ToString(.Fields("field_C").Value)
list.Add(values)
recSet.MoveNext()
Loop
但它更容易理解,如果你创建了用于存储字段值的自定义类:
Console.WriteLine("{0} {1} ({2})", user.FirstName, user.LastName, user.DateOfBirth)
...读不过如此:
Console.WriteLine("{0} {1} ({2})", values(0), values(1), values(2))
在VB.NET你有其他的可能性来操作数据库:
Dim list As New List(Of String())
Using conn = New OleDb.OleDbConnection(_
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=MyPath\MyDb.mdb")
Dim sql = "SELECT myStuff FROM myTable"
Dim command = New OleDbCommand(sql, conn)
conn.Open()
Using reader As OleDbDataReader = command.ExecuteReader()
While reader.Read()
Dim values = New String(reader.FieldCount - 1) {}
For i = 0 To reader.FieldCount - 1
values(i) = Convert.ToString(reader.GetValue(i))
Next
list.Add(values)
End While
End Using
End Using
注意,Using
声明在最后自动关闭的资源。即使发生错误并且代码过早终止。
在VB.NET,你可以写这样的文件(不使用FSO,这也不是.NET等)
Using writer As New StreamWriter("myFile.txt", False)
writer.WriteLine("line 1")
writer.WriteLine("line 2")
writer.WriteLine("line 3")
End Using
你似乎是写一个记录到一个文本文件,你需要通过记录来做这个记录? – Fionnuala 2013-02-09 22:05:42
是的,我正在通过记录读取记录以写入文本文件,这需要这样做,因为我将执行一些将取决于以前的记录包含的计算 – 2013-02-10 02:46:26
不客气。此外,由于您是StackOverflow的新用户,因此我想告诉您,您可以通过查看答案旁边的勾号来获得最佳答案并接受最能帮助您的答案。在这个网站上upvote或接受的答案算作“谢谢”。 – 2013-02-12 14:08:16