2016-11-01 3 views
0

У меня проблема с моей кнопкой «Обновить», я не знаю, с чего начать обновлять мою базу данных SQL, я использую SSMS Microsoft для создания моей таблицы Subjects, и я также связал ее с моим VS 2010 ULTIMATE, где я перетаскиваю мои table to LINQtoSQL и DATASET, я создал кнопку «Сохранить», которая успешно сохраняет мою базу данных и обновляет мое представление datagridview.Как создать кнопку обновления для базы данных?

[ Private Sub Button18_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click 
    If txtSubjectName.Text = "" Then 
     ErrorProvider1.SetError(txtSubjectName, "Subject Name Cannot be Empty!") 
     Exit Sub 
    ElseIf txtSubSName.Text = "" Then 
     ErrorProvider2.SetError(txtSubSName, "Subject Short Name Cannot be Empty!") 
     Exit Sub 
    End If 
    Dim db As New EMSDataContext 
    Dim SaveSubject = From C In db.Subjects 
      Where C.SubjectName = txtSubjectName.Text 
      Select C 

    If SaveSubject.Count <> 0 Then 
     MsgBox("Subject already exits!!", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "Alart!!") 
     Exit Sub 
    Else 
     Dim SaveNSubject As New Subject With {.SubjectName = txtSubjectName.Text, .ShortName = txtSubSName.Text} 
     db.Subjects.InsertOnSubmit(SaveNSubject) 
     db.SubmitChanges() 
     MsgBox("Subject added successfully!", MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "Information") 
    End If 
    Registration_Load(sender, e) 
    txtSubjectName.Text = "" 
    txtSubSName.Text = "" 
End Sub] 

И у меня также есть кнопка Удалить, которая успешно удаляет мои данные из базы данных и обновляет мой DataGridView.

[Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click 
    Dim A As New EMSDataContext 
    Dim B = From C In A.Subjects 
      Where C.ID = Val(DtgvSubject.CurrentRow.Cells(0).Value) 
      Select C 
    Try 
     A.Subjects.DeleteOnSubmit(B.FirstOrDefault) 
     If MsgBox("Are You Sure to Delete This Record?", MsgBoxStyle.Question + vbYesNo, "Question") = MsgBoxResult.Yes Then 
      A.SubmitChanges() 
      MsgBox("Record Deleted Successfully!", MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "Information") 
      txtSubjectName.Text = "" 
      txtSubSName.Text = "" 
      Registration_Load(sender, e) 
     Else 
      txtSubjectName.Text = "" 
      txtSubSName.Text = "" 
      Registration_Load(sender, e) 
     End If 
    Catch ex As Exception 
     MsgBox("Select a Record First!", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "ALERT!!!") 
    End Try 
    If B.Count = 0 Then 
     MsgBox("Please select list to delete!", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "Alart!!") 

    End If 

End Sub] 

Я также создал двойной щелчок события DataGridView ячейки, где я получаю значения ячеек в моей Имя субъекта текстового поля и объекта Краткое название текстового поля, если я дважды щелкнул, который также является преуспевающим.

[ Private Sub DtgvSubject_CellDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DtgvSubject.CellDoubleClick 
    Try 
     Dim i As Integer 
     i = DtgvSubject.CurrentRow.Index 
     Me.txtSubjectName.Text = DtgvSubject.Item(1, i).Value 
     Me.txtSubSName.Text = DtgvSubject.Item(2, i).Value 
    Catch ex As Exception 
     MsgBox("No Values in the Cells!", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "Alert!!!") 
     Button17_Click(sender, e) 
    End Try 
End Sub] 

Мой вопрос, как я могу создать кнопку Update для моей базы данных после получения значений в текстовые поля и обновлять их, повинуясь изменения и обновить мой DataGridView?

+0

Пожалуйста, ответьте мне, я надеюсь, что мой пост понятно , –

ответ

0

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

public Function updaterecord (field1 as integer, field2 as text) as Object 
Dim db As New EMSDataContext 
Dim SaveSubject = From C In db.Subjects 
     Where C.SubjectName = txtSubjectName.Text 
     Select C 
if SaveSubject is not Nothing then 
    C.id = field1 
    C.name = field2 'etc etc 
End if 
db.SaveChanges() 
return 
From C In db.Subjects 
     Where C.SubjectName = txtSubjectName.Text 
     Select C 
    End Function 
+0

Спасибо Хаим, я попробую его –

+0

Хаим это не работает. Любая другая помощь Пожалуйста? –

+0

какая ошибка вы получаете? –

0

Спасибо Хаима я решил проблему с помощью LinqToSql

[ Private Sub bnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bnUpdate.Click 
    If txtClassTeacher.Text = "" Or txtClassName.Text = "" Or txtClassSName.Text = "" Or cboClassSection.Text = "" Then 
     MsgBox("Select the data you want Update Please!", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "ALERT!!!") 
     Exit Sub 
    End If 
    Dim db As New EMSDataContext 
    Dim SaveClasses = From c In db.Classtbls 
         Where c.ID = Val(DtgvClasstbl.CurrentRow.Cells(0).Value) 
         Select c 

    For Each c As Classtbl In SaveClasses 
     c.Class_Teacher = txtClassTeacher.Text 
     c.Class_Name = txtClassName.Text 
     c.Short_Name = txtClassSName.Text 
     c.Section = cboClassSection.Text 
     'Inserting additional changes 
    Next 
    'Submitting changes to the Database 
    Try 
     If MsgBox("Are You Sure You Want Update This Record?", MsgBoxStyle.Question + vbYesNo, "Question") = MsgBoxResult.Yes Then 
      db.SubmitChanges() 
      MsgBox("Data Successfully Updated!", MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "Success!") 
      Registration_Load(sender, e) 
      txtClassTeacher.Text = "" 
      txtClassName.Text = "" 
      txtClassSName.Text = "" 
      cboClassSection.Text = "" 
     Else 
      Registration_Load(sender, e) 
      txtClassTeacher.Text = "" 
      txtClassName.Text = "" 
      txtClassSName.Text = "" 
      cboClassSection.Text = "" 
     End If 
    Catch ex As Exception 
     MsgBox("Update not Successful!", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "ALERT!!!") 
     'Making(Adudjstiment) 
     db.SubmitChanges() 
    End Try 
End Sub] 

Спасибо вам StackOverflow и MSDN для руководства

Смежные вопросы