Hoe?: Sleutel op Tekstveld, hoofdlettergevoelig maken

Status
Niet open voor verdere reacties.

PSVSupporter

Gebruiker
Lid geworden
13 aug 2009
Berichten
148
Hoe kun je een sleutel zetten op een veld, waarbij de velden op zich wel uniek zijn doordat er gebruik gemaakt is van hoofd- en kleine letters.
(Bijvoorbeeld tsdHd en tsdhD)
Ik krijg dit niet voor elkaar, omdat Access dit allebei eigenlijk interpreteerd als tsdhd. Hoe kan ik dit oplossen?
(Hierbij wil ik de gegevens op zichzelf niet aanpassen. Dit zijn programmanamen, waarbij iedere variatie in hoofd- en kleine letters voor kan komen.)
 
Ik heb een oplossing bedacht, wel een omweg, maar hij werkt.
Ik heb aan de programma tabel en de andere tabellen waar programmanaam in voorkomt een veld toegevoegd.

Via een functie zet ik de programmanaam om in een numeriek gegeven maar wel als tekst (anders raak je de precisie kwijt).

Via 999-Asc(letter) haal ik per teken een numerieke waarde op. Beginnend vanaf links.
A (Ascii 65) wordt dan 932 en a wordt dan (ASCII 97) wordt dan 903. De gegevens plak ik aan elkaar vast in een tekstveld. Dus AAAAAA wordt dan 932932932932932932. In een numeriek veld gaat dit niet werken, omdat de precisie dan kwijt raakt (het wordt dan 932932932932932000).
Deze waarden worden wel als uniek gezien en hierdoor kan ik hier nu wel een sleutel op leggen.
 
In de module van je form maar ook de andere modules staat default:
Code:
Option Compare Database
Dit statement is een instelling van het huidige module en bepaald hoe strings met elkaar worden vegeleken. Als je de help opvraagt dan zie je dat je in jouw geval beter
Code:
Option Compare Binary
kan gebruiken.

Share and Enjoy!
 
Helaas, dit werkt niet. Ik heb in module1 (enige die bestaat) dit aangepast, maar dit heeft geen effect op de tabel. Ik kan geen sleutel leggen op het tekstveld, aangezien A nog steeds hetzelfde wordt gezien als a.

Probeer maar eens zelf: Maak een tabel aan met 1 veld: tekst en zet hier een sleutel op. Voeg een record toe met tekst "a". Voeg daarna een record toe met "A". Dit zal niet gaan. (sleutelconflict)

In de module van je form maar ook de andere modules staat default:
Code:
Option Compare Database
Dit statement is een instelling van het huidige module en bepaald hoe strings met elkaar worden vegeleken. Als je de help opvraagt dan zie je dat je in jouw geval beter
Code:
Option Compare Binary
kan gebruiken.

Share and Enjoy!
 
Option Compare Binary wordt gebruikt in Modules en heeft geen impact op de tabellen.

Ik kan ook geen installing vinden die daarvoor zorgt in Access 2003. Misschien de latere versies maar dat kan ik nu niet controleren.

Jouw methode: 999-Asc(letter) of Format(Asc(letter), "00#") werkt ook met getallen. Dat zijn immers ook ascii karakters. Converteer het getal naar een string met Cstr() en gebruik jouw methode om de string om te zetten.

HTH:D
 
Ik lees op een ander forum dat de JET niet hoofdletter gevoelig is. Alleen als je de database op SQL server zet is dit mogelijk.
 
Ben je daarmee geholpen of probeer je het toch voor elkaar te krijgen?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan