Проверяйте дубликаты записей перед добавлением данных в базу данных - PullRequest
0 голосов
/ 15 октября 2018

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

Двуличность следует проверить в столбце Имя, Телефон и Идентификатор, если обнаружена двойственность в любом из этих трех столбцов, а затем показать сообщение, найденноеduplicity.

Ниже приведен код, который помогает мне добавлять данные в базу данных.

sub addUser
    SQL_query = "INSERT INTO dvd (timestammp,Name,Phone,Id,Cat,StartDate,agent,amount,source,conver) VALUES ('"& txtteNow.value &"','"& txtName.value &"','"& txtPhone.value &"','"& txtId.value &"','"& txtCat.value &"','"& txtStartDate.value &"','"& txtsrch.value &"','"& txtamount.value &"','"& txtsource.value &"','"& txtconver.value &"')"
    conn.Execute(SQL_query
end sub 

Я также пытаюсь использовать приведенный ниже код, но он не работает.

SQL_query = "INSERT INTO dvd (timestammp,Name,Phone,Id,Cat,StartDate,agent,amount,source,conver) VALUES('"& txtteNow.value &"','"& txtName.value &"','"& txtPhone.value &"','"& txtId.value &"','"& txtCat.value &"','"& txtStartDate.value &"','"& txtsrch.value &"','"& txtamount.value &"','"& txtsource.value &"','"& txtconver.value &"') WHERE NOT EXISTS (Select '2' from dvd  where Name = + " & txtName.value & + "
conn.Execute(SQL_query)

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Почему бы вам просто не попробовать добавить Уникальные индексы в Имя, Телефон и Идентификатор?Таким образом, ядро ​​базы данных будет автоматически отбрасывать эти записи.
Возможный недостаток: вы не будете знать, какая запись была удалена.

0 голосов
/ 15 октября 2018

Мое решение довольно сложное: используйте запрос INSERT INTO ... SELECT из фиктивной таблицы, содержащей одну запись, затем используйте NOT EXISTS там.

Я тоже собираюсь использовать параметры, вам действительно следуетЯ сделал это самостоятельно, чтобы избежать проблем с внедрением SQL.

CurrentDb в этом сценарии является объектом базы данных DAO.

Я собираюсь использовать только 3 поля, чтобы сделать решение кратким.

With CurrentDb.CreateQueryDef("", "INSERT INTO dvd (timestammp,Name,Phone) " & _ 
    " SELECT p1, p2, p3" & _
    " FROM (SELECT First(ID) FROM MSysObjects) As Dummy" & _
    " WHERE NOT EXISTS(SELECT 1 FROM dvd WHERE Name = p1)"
    .Parameters("p1") = txtteNow.value
    .Parameters("p2") = txtName.value
    .Parameters("p3") = txtPhone.value
    .Execute
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...