Попытка прочитать этот файл csv в vb, затем ответ. Запишите данные в csv.

Я получаю сообщение об ошибке сервера в приложении '/'.

Недействительным аргумент.

Описание: во время выполнения текущего веб-запроса возникло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.Data.OleDb.OleDbException: недопустимый аргумент.

когда я пытаюсь использовать MyCommand.Fill для чтения DataSet

Вот мой код

Dim sheets as new List(Of String)(New String(){"po"})

Dim MyConnection As System.Data.OleDb.OleDbConnection
Dim DtSet As System.Data.DataSet
Dim MyCommand As System.Data.OleDb.OleDbDataAdapter

MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft Office 12.0 Access Database Engine OLE DB Provider;Data Source=" & filepath & ";Extended Properties=Excel 8.0;")   

for p as integer = 0 to sheets.count - 1
    dim dt as DataTable
    MyCommand = New System.Data.OleDb.OleDbDataAdapter("Select * from ["& sheets(p) & "$]", MyConnection)
    DtSet = New System.Data.DataSet
    MyCommand.Fill(DtSet)
    dt = DtSet.Tables(0)

    if p > 0
        response.write(sheets(p))
    end if

next
MyConnection.Close()

person Gamerznation Charlotte    schedule 24.10.2014    source источник


Ответы (1)


У меня есть несколько опасений:

  • По какой причине вы используете Microsoft Office 12.0 Access Database Engine OLE DB Provider? Как насчет использования Microsoft.Jet.OLEDB.4.0?
  • Вы уверены, что ваше соединение с БД (например, MyConnection) открыто?
  • Вы также не хотите, чтобы ваши пользователи получали необработанные ошибки. Изучите использование Try/Catch в этот пример.

Сначала попробуйте открыть соединение, вызвав MyConnection.Open().

Dim sheets as new List(Of String)(New String(){"po"})

Dim MyConnection As System.Data.OleDb.OleDbConnection
Dim DtSet As System.Data.DataSet
Dim MyCommand As System.Data.OleDb.OleDbDataAdapter

MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft Office 12.0 Access Database Engine OLE DB Provider;Data Source=" & filepath & ";Extended Properties=Excel 8.0;")  

MyConnection.Open() '<-------------------- open the connection here

for p as integer = 0 to sheets.count - 1
    dim dt as DataTable
    MyCommand = New System.Data.OleDb.OleDbDataAdapter("Select * from ["& sheets(p) & "$]", MyConnection)
    DtSet = New System.Data.DataSet
    MyCommand.Fill(DtSet)
    dt = DtSet.Tables(0)

    if p > 0
        response.write(sheets(p))
    end if

next
MyConnection.Close()
person lucidgold    schedule 24.10.2014
comment
Что касается вашего первого пункта, мне сказали пойти по моей ссылке, и это было все. Я был сбит с толку тем, почему его офис 12.0, но в его справочном коде это то, что он использует. Мне придется попробовать в этот понедельник, так как удаленное взаимодействие сейчас странно. - person Gamerznation Charlotte; 25.10.2014
comment
Я попытался, и после добавления MyConnection.Open() я получаю ожидаемое окончание оператора. - person Gamerznation Charlotte; 25.10.2014