Я использую набор записей в качестве транспортного средства для получения некоторых данных, которые я получаю.Я получаю дубликаты, и мне было любопытно, как заставить набор записей жаловаться, если предпринята попытка добавить дубликат.
Итак, по сути, я хочу создать ключевое поле.Я нашел параметр adFldKeyColumn, но он не применяется, я должен что-то упустить.
Function CreateIndexedRecordSet() As ADODB.Recordset
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Fields.Append "Name", adBSTR, 255
rs.Fields.Append "pkey", adInteger, , adFldKeyColumn
rs.Open
rs.AddNew Array("Name", "pkey"), Array("foo", 1)
rs.AddNew Array("Name", "pkey"), Array("bar", 1) '<--- this should complain
Debug.Print rs.Supports(CursorOptionEnum.adIndex) '<--- sadly prints False, perhaps use a different provider?
Set CreateIndexedRecordSet = rs
End Function
Пожалуйста, не сортируйте ответы, я прекрасно знаю, что могу использовать словарь, пока я получаю данные и ловлю дубликаты, которыеКстати, это то, что я буду делать в то же время.Просто должен быть эксперт ADO, который знает хитрость.
ОБНОВЛЕНИЕ: Я нашел метод Supports для объекта RecordSet, если я передаю CursorOptionEnum.adIndex
, то он отвечает False.Возможно, используете другого поставщика?