2015-06-10 2 views
1

У меня возникла проблема с обновлением записей в моем документе datagridview. когда я попытался обновить записи в datagridview в форме 2, запись изменится, но datagridview в form1 не будет обновляться, обновление, которое я сделал на записях, остается (постоянно, но только на datagridview 1 в форме 2. оно не будет отображаться на datagridview в форме 1).Записи не обновляются в datagridview

oprdg = datagridview1 по форме 1, приведенный ниже код является кодом для обновления в виде 2

вот мой код:

Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.Click 
    provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source =" 
    'Change the following to your access database location 
    dataFile = "C:\Users\DELL\Downloads\ODRNEWSYSTEM\ODRNEWSYSTEM\Database1.accdb" 
    connString = provider & dataFile 
    myConnection.ConnectionString = connString 
    myConnection.Open() 
    Try 
     Me.Validate() 
     Me.OPRBindingSource.EndEdit() 
     Me.OPRTableAdapter.Update(Me.Database1DataSet.OPR) 
     MsgBox("Update successful") 
     myConnection.Close() 
    Catch ex As Exception 
     MsgBox("Update failed") 
    End Try 
End Sub 

я попробовал некоторый код, как показано ниже кода, но произошла ошибка ,, ошибка указывает на часть «da.fill (dt)». Я забыл, что это за ошибка.

Private Sub RefreshData() 
     Dim connString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\DELL\Downloads\ODRNEWSYSTEM\ODRNEWSYSTEM\Database1.accdb" 
     Dim myConnection As OleDbConnection = New OleDbConnection() 
     myConnection.ConnectionString = connString 
     Dim da As New OleDb.OleDbDataAdapter("SELECT OPROffice as [OPROffice], " & _ 
              "ID as [ID], Elements,Objectives, Measures,Baseline_as_of_2013,Target_by_2016,Actual_Accomplishments_2014,Actual_Accomplishments_2015,Actual_Accomplishments_2016,Initiatives " & _ 
              " FROM OPR ORDER BY ID", myConnection) 
     Dim dt As New DataTable 
     'fill data to datatable 
     da.Fill(dt) 

     'offer data in data table into datagridview 
     Me.OPRDataGridView.DataSource = dt 
     Form1.oprdg.DataSource = dt 
     'close connection 
     myConnection.Close() 
    End Sub 

вот другой код, который ошибка, как ошибка в коде выше:

Public Sub Gridrefresh(ByVal s As String, ByVal dgv As DataGridView) 
     Dim dt As New DataTable() 
     Dim cmd As New OleDbCommand("select * from " + s + "", myConnection) 
     cmd.CommandType = CommandType.Text 
     Dim da As New OleDbDataAdapter(cmd) 
     da.Fill(dt) 
     OPRDataGridView.DataSource = dt 
    End Sub 

и вот изображение для проблемы в моей системе:

http://i.stack.imgur.com/QgNNq.png

+0

Почему бы не использовать набор данных вместо datatable? – Gino

+0

@Gino, ничего не изменилось bro .. –

+2

Вы скрываете ошибку от себя с помощью этой страшной Try/Catch. – Plutonix

ответ

1

Прежде чем назначить подключение к адаптеру данных и выполнить заполнение, вам понадобится myConnection.Open()

С вашим первым примером btnUpdate_Click имеет код, который когда-либо работал?

Взгляните на статью https://msdn.microsoft.com/en-us/library/system.data.common.dataadapter.update%28v=vs.110%29.aspx

+0

мой первый пример btnUpdate_Click, это не сработало, EVER .. –

+0

Я уже изменил свой код .. проверить это..неизменимо от проблемы –

+1

qaZ D Эти наборы данных действительно ужасно чувствительны к точке Microsoft должна иметь были публично намечены (они думают, что я хочу быть привязанным к их областям Лазурного, не так ли?). Вы говорите, что ничего не изменили, можете ли вы посмотреть, входите ли вы в конфигурацию дизайнера данных и видите, есть ли у вас красный xs против представлений, таблиц или полей. Вам нужно только изменить соединение в проекте, чтобы указать на тестовую базу данных, например. тест на жизнь и обратно, теперь сломанные наборы данных, и вы должны создавать их снова с нуля. Я эксперт в области исправления, но избегаю, если могу, существует временное обходное решение. –

0

я нашел ответ. Я пытался использовать этот код:

Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.Click 
     Try 
      Dim dt As New DataTable 
      Dim str As String = String.Empty 
      provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source =" 
      'Change the following to your access database location 
      dataFile = "C:\Users\DELL\Downloads\ODRNEWSYSTEM\ODRNEWSYSTEM\Database1.accdb" 
      connString = provider & dataFile 
      myConnection.ConnectionString = connString 
      myConnection.Open() 
      Me.Validate() 
      Me.OPRBindingSource.EndEdit() 
      Me.OPRTableAdapter.Update(Me.Database1DataSet.OPR) 
      Dim cmd = New OleDb.OleDbCommand("UPDATE [OPR] SET [OPROffice] = @OPROffice, [Elements] = @Elements, [Objectives] = @Objectives, [Measures] = @Measures, [Baseline_as_of_2013] = @Baseline_as_of_2013, [Target_by_2016] = @Target_by_2016, [Actual_Accomplishments_2014] = @Actual_Accomplishments_2014, [Actual_Accomplishments_2015] = @Actual_Accomplishments_2015, [Actual_Accomplishments_2016] = @Actual_Accomplishments_2016, [Initiatives] = @Initiatives Where ID = @ID", myConnection) 
      cmd.Parameters.AddWithValue("@OPROffice", OPROfficeTextBox.Text) 
      cmd.Parameters.AddWithValue("@Elements", ElementsTextBox.Text) 
      cmd.Parameters.AddWithValue("@Objectives", ObjectivesTextBox.Text) 
      cmd.Parameters.AddWithValue("@Measures", MeasuresTextBox.Text) 
      cmd.Parameters.AddWithValue("@Baseline_as_of_2013", Baseline_as_of_2013TextBox.Text) 
      cmd.Parameters.AddWithValue("@Target_by_2016", Target_by_2016TextBox.Text) 
      cmd.Parameters.AddWithValue("@Actual_Accomplishments_2014", Actual_Accomplishments_2014TextBox.Text) 
      cmd.Parameters.AddWithValue("@Actual_Accomplishments_2015", Actual_Accomplishments_2015TextBox.Text) 
      cmd.Parameters.AddWithValue("@Actual_Accomplishments_2016", Actual_Accomplishments_2016TextBox.Text) 
      cmd.Parameters.AddWithValue("@Initiatives", InitiativesTextBox.Text) 
      cmd.Parameters.AddWithValue("@ID", IDTextBox.Text) 
      cmd.ExecuteNonQuery() 
     Catch ex As Exception 
      MsgBox("Update failed") 
     Finally 
      myConnection.Close() 
     End Try 
     RefreshData() 
     OPRDataGridView.RefreshEdit() 
    End Sub 



Private Sub RefreshData() 
     Dim connString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\DELL\Downloads\ODRNEWSYSTEM\ODRNEWSYSTEM\Database1.accdb" 
     Dim myConnection As OleDbConnection = New OleDbConnection() 
     myConnection.ConnectionString = connString 
     Dim da As New OleDb.OleDbDataAdapter("SELECT OPROffice as [OPROffice], " & _ 
              "ID as [ID], Elements,Objectives, Measures,Baseline_as_of_2013,Target_by_2016,Actual_Accomplishments_2014,Actual_Accomplishments_2015,Actual_Accomplishments_2016,Initiatives " & _ 
              " FROM OPR ORDER BY ID", myConnection) 
     Dim dt As New DataTable 
     'fill data to datatable 
     da.Fill(dt) 

     'offer data in data table into datagridview 
     Me.OPRDataGridView.DataSource = dt 
     Form1.oprdg.DataSource = dt 
     'close connection 
     myConnection.Close() 
    End Sub 
Смежные вопросы