2014-10-24 1 views
0

Я получаю ошибку сервера в '/' приложении.Пытается прочитать этот файл csv в vb, а затем откликнуть данные в csv out

Недопустимый аргумент.

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

Сведения об исключении: 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() 

ответ

0

У меня есть несколько проблем:

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

Первая попытка открыть соединение с помощью вызова 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() 
+0

Для вашего первого вопроса, мне сказали идти моим ссылкой, и это было его. Я был смущен тем, почему его офис 12.0, но в его справочном коде это то, что он использует. Я собираюсь попробовать это в понедельник, так как сейчас в нем есть странная привязка. –

+0

Я пробовал, и я получаю конец заявления, ожидаемого после добавления MyConnection.Open() –

+0

У меня нет ошибок с кодом –