2013-12-19 5 views
0

Я могу вставить и считывать данные из файла Excel, но не может обновить данные с помощью article_no в качестве триггера,Обновление рабочего листа Excel с помощью VB.net

Я попытался это

Dim cn As New OleDbConnection 
    Dim cm As New OleDbCommand 
    cn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\crys\Desktop\TEST\Book1.xls;Extended Properties=""Excel 12.0 Xml;HDR=YES""") 
    cn.Open() 
    With cm 
     .Connection = cn 
     .CommandText = "UPDATE [up$] SET name = '" & TextBox2.Text & "', QC_status ='" & ComboBox1.SelectedItem & "', reason='" & TextBox3.Text & "', date='" & DateTimePicker1.Text & "' WHERE article_no = '" & TextBox1.Text & "'" 
     If (ExecuteQuery(.CommandText) = True) Then 
      MsgBox("record updated") 
     End If 
    End With 


    cn.Close() 

Но он показывает мне ошибку invalid object 'up$'. Пожалуйста, помогите мне исправить эту проблему.

+0

@ jigar .. как называется ваш лист? –

+0

'вверх' - это имя моего листа, который я хочу обновить –

+0

@ jigar..i не смог найти ошибки в вашем коде. Можете ли вы проверить один раз, являетесь ли вы соединением с документом по правильному пути. Я имею в виду строку подключения. –

ответ

0

Вообще-то, как это делается. Я не может найти какую-либо ошибку в коде:

Imports System.Data 
Public Class Form1 
    Private Sub Button1_Click(ByVal sender As System.Object, _ 
       ByVal e As System.EventArgs) Handles Button1.Click 
     Try 
      Dim MyConnection As System.Data.OleDb.OleDbConnection 
      Dim myCommand As New System.Data.OleDb.OleDbCommand 
      Dim sql As String 

      MyConnection = New System.Data.OleDb.OleDbConnection _ 
      ("provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + _ 
      "'c:\testfile.xls';Extended Properties=Excel 8.0;") 

      MyConnection.Open() 
      myCommand.Connection = MyConnection 
      sql = "Update [Sheet1$] set name = 'New Name' where id=1" 
      myCommand.CommandText = sql 
      myCommand.ExecuteNonQuery() 
      MyConnection.Close() 
     Catch ex As Exception 
      MsgBox(ex.ToString) 
     End Try 
     MsgBox("Updated ") 
    End Sub 
End Class 

Надеется, что это помогает ..

+0

, показывающий синтаксическую ошибку в Обновление и erro в строке myCommand.ExecuteNonQuery() –

+0

@jigar: приведенный выше код - это правильный способ сделать это :) Какую версию VS вы используете? Я вижу, что вы отметили его как vs 2010 –

+0

visual studio 2010 –

1

, наконец, получил мое право запроса для обновления первенствовать лист, код выглядит следующим образом:

Dim cn As New OleDbConnection 
Dim cm As New OleDbCommand 
cn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\crysol\Desktop\TEST\Book1.xls;Extended Properties=""Excel 12.0 Xml;HDR=YES""") 
cn.Open() 
With cm 
    .Connection = cn 
    .CommandText = "update [up$] set [name]=?, [QC_status]=?, [reason]=?, [date]=? WHERE [article_no]=?" 
    cm = New OleDbCommand(.CommandText, cn) 
    cm.Parameters.AddWithValue("?", TextBox2.Text) 
    cm.Parameters.AddWithValue("?", ComboBox1.SelectedItem) 
    cm.Parameters.AddWithValue("?", TextBox3.Text) 
    cm.Parameters.AddWithValue("?", DateTimePicker1.Text) 
    cm.Parameters.AddWithValue("?", TextBox1.Text) 
    cm.ExecuteNonQuery() 
    MsgBox("UPDATE SUCCESSFUL") 
    con.Close() 
End With 
Смежные вопросы