IOException было не обработано. Неверное имя файла или номер
Я написал это, чтобы прочитать выбранный индекс из файла и отобразить его детали, но у меня есть ошибка, указанная в заголовке.
Мой код:
'Declare variables
Dim OrdersFile As String
Dim NumRecsFound As Integer
Dim orderString As String
Dim searchID As Integer
'Find the selected order ID
orderString = lstOrder.Text
searchID = Val(Microsoft.VisualBasic.Left(orderString, 10))
'Set up the path to the orders file
OrdersFile = Application.StartupPath & "/orders.dat"
'Open the orders file in random access mode
FileOpen(1, OrdersFile, OpenMode.Random, , , Len(OrderRec))
'For each record in the file
RecPos = 1
'Read in every record until the end of the file is reached
Do While Not EOF(1)
FileGet(1, OrderRec, RecPos)
'If the record matches selected order, display the order file
If OrderRec.OrderID = searchID Then
NumRecsFound = NumRecsFound + 1
With OrderRec
txtOrderID.Text = .OrderID
txtOrderDate.Text = .OrderDate
txtPrice.Text = .Price
cmbCustomers.Text = .CustomerID
cmbPizza.Text = .PizzaID
End With
End If
'Lock fields until edit is selected
txtOrderID.Enabled = False
txtFee.Enabled = False
txtOrderDate.Enabled = False
txtStatus.Enabled = False
txtPrice.Enabled = False
cmbCustomers.Enabled = False
cmbPizza.Enabled = False
'Close the orders file and leave the subroutine
FileClose(1)
'If the records don't match then get the next record
RecPos = RecPos + 1
Loop
'If no records are found then output message and close the file
If NumRecsFound = 0 Then
MsgBox("Order " & searchID & " could not be found. Please try again.")
FileClose(1)
End If
FileClose(1)
ошибка появляется в строке 19; "Делай пока не EOF(1)"
Любая помощь будет оценена. Благодарю.
1 ответ
Вы говорите, что ошибка на линии
Do While Not EOF(1)
FileGet(1, OrderRec, RecPos)
.......
но у вас есть это
'Close the orders file and leave the subroutine
FileClose(1)
'If the records don't match then get the next record
RecPos = RecPos + 1
Loop
Так что, если у вас есть более одной записи, во втором цикле ваш код завершается с указанной ошибкой
Переместите вызов FleClose(1) за пределы цикла, когда вы действительно закончили читать свои записи....
Конечно, это оставляет проблему, связанную с более чем одной записью.
Наконец, мы находимся в VB.NET, старая функция VB6 должна быть сброшена как можно скорее. Так что, если вы просто не поддерживаете старый проект, потратьте некоторое время, чтобы изменить этот код для использования
String.substring
Int32.TryParse
StreamReader
Используя заявление
Не стесняйтесь добавлять.....