Datagridview перестает писать, находясь в цикле каталогов - PullRequest
0 голосов
/ 18 июня 2019

У меня есть догадка, что по какой-то причине вы теряете возможность писать, находясь в цикле каталогов, но, возможно, нет. У меня есть приложение vb.net, которое работает через каталог и извлекает из него все файлы csv, просматривает их, а затем записывает их в таблицу данных. Код для записи информации о файле csv в Datagridview работает, когда я задаю исходный путь в виде строки для одного файла, но когда я добавляю цикл каталогов, он просто прекращает запись. Я добавил часы на все переменные, и все проверено. Я понятия не имею, почему код будет работать сам по себе, но не в цикле каталогов. Я подумываю о попытке создать массив строк со всеми исходными путями, а затем перебрать массив строк как возможное исправление, но я не понимаю, почему это не работает.

         Try

        'loop through directory
        Dim i As Integer = 0
        Dim strFileName As String
        Dim strFolder As String = "Y:\Public\Sanmina Production\3-Projector MTF Test\"
        Dim strFileSpec As String : strFileSpec = strFolder & "*.csv"
        strFileName = Dir(strFileSpec)
        Do While Len(strFileName) > 0

            Dim SourcePath As String = strFolder + strFileName

            If File.Exists(SourcePath) Then

            Else
                MsgBox("There is an error finding the excel file. Please contact ")
                Exit Sub
            End If

            Try

'The code works from here to the end of this using statement 
'if I remove sourcepath and replace it with a single file directory
                i = 0
                Using myReader As New Microsoft.VisualBasic.FileIO.TextFieldParser(SourcePath)
                    myReader.TextFieldType = FileIO.FieldType.Delimited
                    myReader.SetDelimiters(",")

                    Dim currentRow As String()
                    While Not myReader.EndOfData
                        Try
                            currentRow = myReader.ReadFields()
                            Dim currentField As String
                            For Each currentField In currentRow
                                If currentField = "" Then
                                    'Must be value
                                    DataGridView1.Rows(0).Cells(i).Value = currentField
                                    i = i + 1
                                Else

                                    If currentField.Substring(0, 1) = "M" Then

                                        If currentField.Substring(1, 1) = "T" Then

                                            If currentField.Substring(2, 1) = "F" Then
                                                'Skip this one
                                                ' MsgBox("Skip")
                                            Else
                                                DataGridView1.Rows(0).Cells(i).Value = currentField
                                                i = i + 1
                                            End If
                                        Else
                                            DataGridView1.Rows(0).Cells(i).Value = currentField
                                            i = i + 1

                                        End If
                                    Else
                                        DataGridView1.Rows(0).Cells(i).Value = currentField.ToString
                                        i = i + 1

                                    End If
                                End If

                            Next
                        Catch ex As Microsoft.VisualBasic.
                                    FileIO.MalformedLineException
                            MsgBox("Line " & ex.Message &
                            "is not valid and will be skipped.")
                        End Try
                    End While
                End Using

                DataGridView1.Rows.Add("")
                i = 0


            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try


            strFileName = Dir()
        Loop


    Catch ex As Exception
        MsgBox(ex.ToString)
    End Try
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...