converteren van tekst naar numeriek

Status
Niet open voor verdere reacties.

Annevb

Gebruiker
Lid geworden
13 sep 2010
Berichten
8
Hoi,

Ik heb een database van iets meer dan 8 miljoen records, hierdoor is het niet mogelijk om in de ontwerpweergave het gegevens type van tekst naar numeriek te wijzigen.
Sommige waarden beginnen met een of meerdere nullen, dit wil ik graag zo houden.
Ik heb geprobeerd met
CVar--> dit houd het cijfer goed, maar blijft een "tekst"
CLng --> dat wordt het wel numeriek, maar verlies ik de 000-en voor mijn getallen
CInt --> gebruik ik net als CVar en CLng namelijk CInt([veldnaam]) maar dan geeft hij een #fout

Heeft iemand een tip?
Alvast bedankt.

Groetjes Anne
 
Zodra je naar een numerieke waarde converteert, raak je altijd de voorloopnullen kwijt. Wil je die behouden, dan moet je het veld dus op tekst laten staan. Is er een reden om ze numeriek te maken?
 
Dank voor de snelle reactie!
Ja er is een rede waarom ik het graag nummeriek heb. Het is namelijk de unieke identifier voor de DLookup functie die ik zou willen gebruiken. Als je het "tekst" laat werkt dat geloof ik niet.
 
DLookup levert zelf een tekststring af, dus daar hoef je het niet voor te doen. Verder kun je in DLookup ook een tekststring zoeken.
Voor een Numeriek veld:
Code:
DLookup("[Veldnaam]";"tabel";[ID]=" & [Formuliernaam].[Form]![ID])
Voor een tekstveld:
Code:
DLookup("[Veldnaam]";"tabel";[ID]= '" & [Formuliernaam].[Form]![ID] & "'")
 
Kan het zijn dat de bewerking van DLookup voor een tekst zwaarder is dan voor numeriek voor mijn computer.
In een klein test databaseje werkte je tip, maar in het origineel helaas niet, dan loopt de computer steeds vast....

Heb je daar toevallig ook zo'n goede tip voor? :)
 
en nog een probleem, ik wilde graag de vorige record zien --> DLookUp("[Veld1]";"Tabel1";"[Id]='" & [Id]-1 & "'")
Maar is dit mogelijk als access de waarde als "tekst" ziet?
 
DLookup staat bekend om zijn trage werking. Als de pc echter vastloopt, dan is het ofwel een hele grote tabel, of een hele lastige query. Je zou dan kunnen kijken of de query wat sneller gemaakt kan worden, door bijvoorbeeld een betere index op de tabel te zetten, of door de query anders op te zetten met een betere filtering bijvoorbeeld.
Alternatief is dat je een functie maakt die de DLookup vervangt, waardoor hij sneller wordt. Zelf gebruik ik zelden een DLookup, juist vanwege die eigenschappen.
 
Hoi Octafish,

De database is inderdaad groot, ik heb hem nu gesplitst in 2 x 4 miljoen records, niet handig, maar wel een stuk sneller.
Het is dus niet mogelijk om als je het gegevens type als "tekst" houd DLookup een record terug laat kijken?

DLookUp("[datum]";"Tabel4a";"[UI]='" & [UI]-1 & "'")

en is dat wel mogelijk als je zelf een functie maakt?

Groetjes Anne
 
Het maakt voor DLookup niet uit of je een numeriek veld opzoekt of als criterium gebruikt, of een tekstveld. Het probleem met DLookup is dus dat het behoorlijk traag is, juist omdat alles in de functie zelf als tekst wordt behandeld. Je kunt DLookup dus gewoon gebruiken.
Het voordeel van zelf een functie maken voor het opzoeken van gegevens is dat je DLookup niet meer nodig hebt, en dus iets kunt maken dat veel sneller werkt.
 
Als je aangeeft wat er precies moet gebeuren, dan kunnen wij 'm ook wel voor je verzinnen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan