Вопрос по записи в базу данных Access из Excel через ADO. Столкнулся с проблемой: перед записью хотел проверить, есть ли уже данная запись в базе. Для этого сделал запрос и воспользовался методом Recordset.RecordCount, только он почему-то всегда возвращает "-1", даже если запись есть. Но что сделано неправильно? Как определить наличие уже существующей записи в базе данных?
Код: Выделить всё
Dim DBFullName As String
Dim Cnct As String, Src As String
Dim Connection As ADODB.Connection
Dim Recordset As ADODB.Recordset
Dim Col As Integer
' Database information
DBFullName = ThisWorkbook.Path & "\База данных2.mdb"
' Open the connection
Set Connection = New ADODB.Connection
Cnct = "Provider=Microsoft.ACE.OLEDB.12.0;"
Cnct = Cnct & "Data Source=" & DBFullName & ";"
Connection.Open ConnectionString:=Cnct
' Create RecordSet
Set Recordset = New ADODB.Recordset
With Recordset
' Filter
Src = "SELECT * FROM Контакты"
Src = Src & " WHERE Фамилия = 'Иванов'"
Src = Src & " and Имя = 'Иван'"
Src = Src & " and Отчество = 'Иванович'"
.Open Source:=Src, ActiveConnection:=Connection
End With
MsgBox Recordset.RecordCount
If Recordset.RecordCount < 0 Then ' проверка, если уже эта запись
Src = "INSERT INTO Контакты (Фамилия, Имя, Отчество)"
Src = Src & " VALUES ('Иванов', 'Иван', 'Иванович')"
'запись в базу данных
Connection.Execute Src, adCmdText + adExecuteNoRecords
Else
MsgBox "Уже есть в списке!"
End If
Set Recordset = Nothing
Connection.Close
Set Connection = Nothing