Member 13895315 Ответов: 2

Как обновить поля таблицы доступа


Привет Друзья,

У меня есть проект разработки в Visual Studio-2015, использующий базу данных Access в качестве серверной части. При запуске ниже кода я не сталкиваюсь с каким-либо сообщением об ошибке и не обновляю запись в таблице:

пожалуйста помочь

Что я уже пробовал:

Private Sub BtnUpdate_Click(sender As Object, e As EventArgs) Handles BtnUpdate.Click
      BtnUpdate.Enabled = False : Dbconnection.Close() : Dbconnection.Open()

      EdtEmpCmd.CommandText = "UPDATE EMP_MASTER  ) " &
      "( SET Sap_No= @Sap_No, CPF_No= @CPF_No, Name = @Name, Designation= @Designation, DesigIndex= @DesigIndex, CompJoining= @CompJoining)" &
       "( TPSJoining=@TPSJoining, QtrNo=  @QtrNo, DOB= @DOB, DOR= @DOR, BloodGroup=  @BloodGroup,  MobileNo=  @MobileNo, CLAvail=  @CLAvail) " &
      "(FLAvail=@FLAvail, CLBal= @CLBal, FLBal=@FLBal, EmailID=  @EmailID, Status=@Status where Sap_No= @Sap_No) ;   "

      EdtEmpCmd.CommandType = CommandType.Text
      Try

          EdtEmpCmd.Parameters.AddWithValue("@Sap_No", CInt(TxtSapID.Text))

          EdtEmpCmd.Parameters.AddWithValue("@CPF_No", TxtCPFNo.Text.ToString())

          EdtEmpCmd.Parameters.AddWithValue("@Name", TxtEmpName.Text.ToString())

          EdtEmpCmd.Parameters.AddWithValue("@Designation", CmbDesignation.Text.ToString())

          EdtEmpCmd.Parameters.AddWithValue(" @DesigIndex", CmbDesignation.SelectedIndex + 1)

          EdtEmpCmd.Parameters.AddWithValue(" @CompJoining", DtpCompJoining.Value.ToShortDateString)

          EdtEmpCmd.Parameters.AddWithValue(" @TPSJoining", DtpTPSJoining.Value.ToShortDateString)

          EdtEmpCmd.Parameters.AddWithValue("@QtrNo", TxtQtrNo.Text.ToString())

          EdtEmpCmd.Parameters.AddWithValue("@DOB", DtpBirthDate.Value.ToShortDateString)

          EdtEmpCmd.Parameters.AddWithValue("@DOR", DtpRetirementDate.Value.ToShortDateString)

          EdtEmpCmd.Parameters.AddWithValue("@BloodGroup", CmbBloodGroup.Text.ToString())

          EdtEmpCmd.Parameters.AddWithValue("@MobileNo", TxtMobileNo.Text.ToString())

          EdtEmpCmd.Parameters.AddWithValue("@CLAvail", CInt(TxtClAvail.Text))

          EdtEmpCmd.Parameters.AddWithValue("@FLAvail", CInt(TxtFlAvail.Text))

          EdtEmpCmd.Parameters.AddWithValue("@CLBal", (CInt(15 - TxtClAvail.Text)))

          EdtEmpCmd.Parameters.AddWithValue("@FLBal", (CInt(6 - TxtFlAvail.Text)))

          EdtEmpCmd.Parameters.AddWithValue("@EmailID", TxtEmailID.Text.ToString())

          EdtEmpCmd.Parameters.AddWithValue("@Status", "A")

          AddEmpCmd.ExecuteNonQuery()
          Call ScrnClr()
          Dbconnection.Close()
          'Exit Sub
      Catch ex As Exception
          MessageBox.Show(ex.Message)

      End Try

  End Sub

2 Ответов

Рейтинг:
1

CHill60

Во - первых- у вас есть синтаксические ошибки в вашем SQL...

"UPDATE EMP_MASTER  ) "
Попробуйте убрать все эти лишние скобки и поставить несколько дополнительных запятых
UPDATE EMP_MASTER  
 SET Sap_No= @Sap_No, CPF_No= @CPF_No, Name = @Name, Designation= @Designation, DesigIndex= @DesigIndex, CompJoining= @CompJoining,
 TPSJoining=@TPSJoining, QtrNo=  @QtrNo, DOB= @DOB, DOR= @DOR, BloodGroup=  @BloodGroup,  MobileNo=  @MobileNo, CLAvail=  @CLAvail, 
FLAvail=@FLAvail, CLBal= @CLBal, FLBal=@FLBal, EmailID=  @EmailID, Status=@Status where Sap_No= @Sap_No ;  

Следующий вопрос, очевидно, заключается в том, существует ли на самом деле запись с sap_no со значением, которое находится в текстовом поле txtSapId? Один из них следует остерегаться, поскольку вы предполагаете, что целое число было введено в это текстовое поле

С другой стороны, все эти Txt....Text.ToString() ... этот .ToString() не нужен, вы буквально говорите: "преобразуйте эту строку в строку"


Рейтинг:
1

OriginalGriff

Затем используйте отладчик: поставьте точку останова на линию

EdtEmpCmd.Parameters.AddWithValue("@Sap_No", CInt(TxtSapID.Text))
И узнайте точно, что находится внутри TxtSapID.Text и то, что CInt возвращает в качестве значения из него.
Затем вручную используйте Access, чтобы открыть файл - прежде чем вы перейдете к дальнейшему обновлению - и SELECT все строки с этим значением в Sap_no
Посмотрите на них - есть ли они? Ваш WHERE пункт требует точного соответствия.
Проведите отладчик через код и запишите значения, которые вы обновляете. Сравните их с текущими значениями в БД.
Когда вы доберетесь до линии
AddEmpCmd.ExecuteNonQuery()
выполните его и повторите команду SELECT, чтобы проверить, что произошло. Изменились ли ценности, как и ожидалось?

Мы не можем сделать ничего из этого для вас: у нас нет никакого доступа к вашей машине или БД!