In een VB6 applicatie probeer ik een disconnected recordset te genereren met een primary key als volgt:
In deze tabel sla ik woorden op. Omdat ik wil dat woorden maar 1 keer worden opgeslagen is de kolom "Word" tevens de primary key (zie adFldKeyColumn) van de tabel. Nu ga ik deze recordset echter vullen als volgt:
Het 2e record dat ik wil toevoegen geeft geen foutmelding terwijl ik normaal gesproken een "duplicate key" error zou moeten krijgen.
Als workaround voor dit probleem moet ik nu iedere keer handmatig in de recordset zoeken of het woord voorkomt en alleen toevoegen indien het woord niet bestaat, maar dit werkt zeer vertragend.
Weet iemand hoe ik ervoor kan zorgen dat dit veld een echte primary key wordt of hoe ik op het veld een unique constraint kan leggen?
Volgens http://www.devguru.com/Te...ref/field_attributes.html zou de adFldKeyColumn constante ervoor moeten zorgen dat het veld een primary key wordt, maar dat lijkt dus niet te werken:
P.S: Ik weet dat ik dit met .NET datasets wel voor elkaar kan krijgen, maar deze applicatie is nog in VB6 geschreven.
code:
1
2
3
4
5
6
7
8
9
| Set rs = New ADODB.Recordset
With rs
.CursorLocation = adUseClient
.CursorType = adOpenDynamic
.ActiveConnection = Nothing
.Fields.Append "Word", adVarWChar, 64, adFldKeyColumn
.Fields.Append "Articlenr", adVarWChar, 16
.Open
End With |
In deze tabel sla ik woorden op. Omdat ik wil dat woorden maar 1 keer worden opgeslagen is de kolom "Word" tevens de primary key (zie adFldKeyColumn) van de tabel. Nu ga ik deze recordset echter vullen als volgt:
code:
1
2
3
4
5
6
7
8
| rs.AddNew
rs.Fields("Word") = "Hallo"
rs.Update
rs.AddNew
rs.Fields("Word") = "Hallo"
rs.Update
MsgBox rs.RecordCount |
Het 2e record dat ik wil toevoegen geeft geen foutmelding terwijl ik normaal gesproken een "duplicate key" error zou moeten krijgen.
Als workaround voor dit probleem moet ik nu iedere keer handmatig in de recordset zoeken of het woord voorkomt en alleen toevoegen indien het woord niet bestaat, maar dit werkt zeer vertragend.
Weet iemand hoe ik ervoor kan zorgen dat dit veld een echte primary key wordt of hoe ik op het veld een unique constraint kan leggen?
Volgens http://www.devguru.com/Te...ref/field_attributes.html zou de adFldKeyColumn constante ervoor moeten zorgen dat het veld een primary key wordt, maar dat lijkt dus niet te werken:
P.S: Ik weet dat ik dit met .NET datasets wel voor elkaar kan krijgen, maar deze applicatie is nog in VB6 geschreven.
It’s nice to be important but it’s more important to be nice