Formule voor DefaultValue

Status
Niet open voor verdere reacties.

Artemiss

Gebruiker
Lid geworden
13 feb 2009
Berichten
130
Ik heb een vraagje en schaam me er eigenlijk voor dat ik hier niet uitkom, want het is voor mijn gevoel zo simpel.

Ik probeer in de bijgevoegde database ervoor te zorgen dat als ik het formulier "offerte_invoeren" in toevoegmodus open met de macro "offerte_invoeren" hij opkomt met het eerst volgende offertenummer, maar ik krijg dit niet voor elkaar.
Wat ik gedaan heb is in het formulier bij offertenummer een formule als DefaultValue in te vullen die de Max van het offertenummer neemt +1.
In een query werkt dit, maar als DefaultValue geeft dezelfde formule als resultaat alleen maar 1. Ik heb ook al geprobeerd om de DefaultValue formule dan te laten verwijzen naar dee query, maar dan is de uitkomst Name#

Kan iemand mij zeggen wat ik verkeerd doe? Heeft dit misschien te maken met iets dat anders werkt in Access 2007?
 

Bijlagen

Het zou niet anders moeten werken in 2007. Maar dat pakket heb ik de hoek ingetrapt, dus als je een 2003 variant kan opslaan, dan graag!
 
Tja, dat zou ik het liefst ook willen doen, maar ik moet er verplicht in werken voor mijn werk. Grmbl, ik word er knettergek van.
 
Maar voor de oplossing kunnen nu dus wel naar een 2003 variant kijken, denk ik...
 
Klopt het dat het offertenummer er zo uitziet: 10-103? En dat je een nieuw nummer baseert op a. jaartal (1o), en b. volgnummer (103)? Ergo: je wilt als nieuwe waarde nu zien: 10-104??
 
Wijzig in de ontwerpweergave van je formulier de standaardwaarde in

"10-" & DMax("CInt(Right(Offertenummer,3))";"Projectentabel")+1

Tardis
 
Thanks, super!
Kun je me ook nog vertellen wat precies het verschil is tussen DMax en Max en waar Cint voor staat?
 
Mijn oplossing vind ik zelf wat netter, omdat je nu geen rekening meer hoeft te houden met het jaar. Dit formulier begint namelijk bij een nieuw jaar gewoon weer opnieuw.
Kijk maar eens of je hier wat aan hebt.
DMax is een functie waarmee je de hoogste waarde van een bepaald veld opzoekt in een tabel.
De functie van Tardis zal niet altijd goed werken, omdat hij de drie karakters rechts opzoekt. Dat werkt natuurlijk alleen als er drie cijfers staan. Omdat hij van het de tekst 001 een getal maakt met cInt (daar dient die functie dus voor) zal de tekst 001 worden teruggebracht tot 1. Daar tel je dan de waarde 1 bij op, zodat de nieuwe code 10-2 wordt, en niet 10-002.
Met als gevolg, dat de functie de volgende keer niet meer werkt.
 

Bijlagen

Laatst bewerkt:
Nee tardis, dat doe hij niet
 
Beste Tardis en Octafish,

Allebei heel erg bedankt!
Ocatfish heeft overigens wel gelijk dat de oplossing van Tardis 10-2 genereert ipv 10-002, maar dit had ik reeds ondervangen door te beginnen bij nummer 100.
En ik ben er ook vrij zeker van dat de oplossing van Octafish inhoud dat ik er nooit meer iets aan hoef te corrigeren, maar mocht dit wel het geval zijn, zal ik me weer op Helpmij.nl moeten begeven, want ik ben niet zo ver gevorderd met VBA.
Dus ondanks de superieure kwaliteit van de oplossing van Octafish, houd ik het voorlopig toch bij die van Tardis. De methode van Octafish bewaar ik voor een moment dat ik meer tijd heb om hem uit te pluizen

Frauke
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan