Проверка дубликатов записей при обновлении базы данных vb.net
Я уже хорошо справляюсь с проверкой при добавлении, и она работает именно так, как я хотел.
Я использовал oledbDataReader для проверки своей базы данных
Это мой пример кода, используемого при проверке базы данных (этот код предназначен для добавления новой записи)
Dim CompQuery As String = "SELECT * FROM Company WHERE CompanyName = '" & txtCompName.Text & "' AND AssociationID = " & cmbUnderAssoc.SelectedValue & " " Dim compCommand As OleDbCommand = New OleDbCommand(CompQuery, con) compCommand.Parameters.AddWithValue("CompanyName", txtCompName.Text) compCommand.Parameters.AddWithValue("AssociationID", cmbUnderAssoc.SelectedValue) con.Close() con.Open() Using compReader As OleDbDataReader = compCommand.ExecuteReader If compReader.HasRows Then MsgBox("Entry already exist! Please input new entry") Exit Sub Else
Я попробовал ту же логику при обновлении, но она блокирует даже редактируемую запись. Поэтому мне нужно изменить название компании или ее ассоциации, чтобы она обновилась.
Я хочу, чтобы редактируемая запись могла обновляться в любое время даже без внесения изменений, в то время как datareader будет сравнивать эту запись с другими записями в базе данных, чтобы проверить, будет ли у нее какая-либо дублирующая запись при обновлении.
Заранее спасибо :)
OriginalGriff
Что такое сам запрос?
То есть, что находится в строке CompQuery?
Jake Robert
Вот он
Dim CompQuery As String = "SELECT * FROM Company WHERE CompanyName = '" & txtCompName.Текст & "' и AssociationID = " & cmbUnderAssoc.SelectedValue & " "
Я также обновил свой вопрос для лучшего обзора.
Maciej Los
Что это за база данных?
Jake Robert
Я использую MS Access в качестве базы данных.
Maciej Los
В дополнение к решению 1 от OriginalGriff, я бы предложил изменить логику, которую вы используете. Если вы хотите добавить данные и предотвратить дубликаты, используйте query with СУЩЕСТВУЕТ[^] заявление. Пожалуйста, см. Пример - с инструкцией INSERT раздел.
Jake Robert
Я тоже попробую твою идею. Спасибо :) Обновится, как только я его протестирую.