Standaardwaarde in een keuzenlijst

Status
Niet open voor verdere reacties.

Isabelle Sels

Gebruiker
Lid geworden
9 sep 2010
Berichten
55
Hoe kan ik als standaardwaarde in een keuzenlijst zettn op de eerst record van de achterliggende query?

Mvg
Isabelle
 
Een standaardwaarde in een keuzelijst vind ik zelf een heel slecht idee; het maakt gebruikers lui en ze kijken dan niet of minder nauwkeurig naar die keuzelijst. Met als gevolg dat er een waarde is gekozen die misschien niet juist is. Bij een keuzelijst verplicht je (als het veld tenminste ook verplicht is) om na te denken over de te maken keuze. Een standaardwaarde is (de naam zegt het al) een repeterende waarde. In beginsel ligt die waarde vast, zoals een standaard plaatsnaam voor je klanten (een bakker in Rotterdam zal de meeste klanten in Rotterdam hebben, en dan is dat dus een goede standaardwaarde) of een formule als DATE() voor een factuurdatum.
Je kunt een standaardwaarde dus niet zomaar uit een query halen; wel kun je een waarde uit een record als nieuwe standaardwaarde meenemen naar een volgend record.
 
Het gaat erom dat verschillende mensen thuis een database kunnen gebruiken om later de gegevens te exporteren naar een hoofdbureau.
Bij het ingeven van een nieuwe puppy, zou de staandaard waarde van de PuppyCoach-ID standaard moeten ingevuld zijn met het eerste (en meestal ook enige) record uit die tabel (query). Om te voorkomen dat deze nie ingevuld wordt wil ik er een standaard waarde inzetten.

Het kan natuurlijk ook een oplossing zijn om ervoor te zorden dat de velden ingevuld worden vooraleer ze verder kunnen, maar weet niet hoe ik dit dan het beste oplos.
 
Het scheelt wellicht als je de procedure eens vanaf het begin beschrijft: wij weten natuurlijk niet hoe jouw werkwijze er uit ziet, en zonder inzicht daarin is het bijna onmogelijk om de juiste tips te geven. Na een aantal draadjes begint nu het beeld naar boven te drijven dat je mensen een database meegeeft, die ze zelf in moeten vullen. En waar ergens in een tabel een keuzelijst zit waarin ze een coach moeten selecteren. Of dat de juiste werkwijze is, laat ik in het midden, maar als dat zo is, dan roept dat ogenblikkelijk de vraag op: waarom moet een klant een coach kiezen uit een keuzelijst als er niks te kiezen is? Waarom dan niet gelijk een normaal tekstveld met een standaardwaarde gebruikt? Keuzelijsten in een tabel zijn wat mij betreft zowiezo al uiterst onwenselijk (zeker als je ze aan een tabel koppelt) maar een keuzelijst met één waarde? Riekt een beetje als de T-Ford uit de vorige eeuw...
 
Waarom je mogelijk wél een standaardwaarde in een keuzelijst wilt

Ik gebruik zo'n keuzelijst, echter dan in een formulier. Ik heb hoofdstuk 8 van Access voor Beginners er op na gelezen. Een super handleiding voor het maken van keuzelijsten. Ik heb mijn afhnakelijke keuzelijst werkend.

Maar ook ik zou verrekte graag (in bepaalde gevallen) bij een keuzelijst een default waarde willen instellen "bij kiezen", (On enter).

Je werkt met landnamen, en Locatienamen (duikplaatsen) in die handleiding. Stel nu, dat er bij de landnaam "Luxemburg" maar 1 LocatieNaam "Alzette" is.
De keuzelijst "LocatieNaam_KL" is afhankelijk van keuzelijst "LandNaam_KL".
Nadat "luxemburg" is gekozen, zou ik nu graag in de keuzelijst LocatieNaam_KL, "Alzette" als default value wensen, omdat er in dat land maar 1 optie mogelijk is.

Nou kun je wel "requery" gebruiken, maar je moet eerst nog dat Alzette aanklikken. Hij vult dat niet default even in. Een soort
"ColMax([LocatieNaam]) where [land] = [formulier.landnaam_KL].value"
zou helemaal super zijn om als default value na bijwerken van het land uit te kunnen voeren. Een standaardwaarde wordt alleen bij het openen van een rij (record) ingesteld. Ik zou deze dus graag opnieuw in willen stellen afhankelijk van de keuzelijst LandNaam_KL. Hoe doe je dit?
 
Ik begin een beetje te snappen waar je heen wilt :)
In het voorbeeldje uit de cursus kun je dat zo oplossen:
Code:
    With Me.cboCat2
        .RowSource = strSQL
        .Requery
        If .ListCount = 1 Then
            .Value = .ItemData(0)
        End If
    End With
Je checkt dus de Listcount van je keuzelijst, en als er 1 item in de lijst zit, maak je die actief.
 
Je begrijpt natuurlijk dat het mij niet om de duikplaatsen was te doen in mijn geval, maar dat was wel even makkelijk om uit te leggen.

Uiteraard nog even

Dim strSQL as String
strSQL = "Rijbronquery die je gebruikt voor de keuzelijst"

toegevoegd. (waarbij de rijbronquery 1 kolom retourneerd, die de nieuwe standaardwaarde voor je keuzelijst bevat)

en daarmee werkt dit echt gaaf. Super bedankt! succes Isabelle!
 
Ja prachtig bedacht, en prachtig werkend voor teksten. Maar nu komt het leuke: een valuta veld op deze manier instellen!

Stel nu even dat een duik daar in luxemburg 100 euro kost. Dat moet in het veldje "gkp" (gkp = GrondstofKostPrijs in mijn geval) komen.


Dim curSQLgkp As Currency

curSQLgkp = (2 * 50)

With Me.gkp
.RowSource = curSQLgkp
.Requery
If .ListCount = 1 Then
.Value = .ItemData(0)
End If
End With


Stel nu even dat een duik daar in luxemburg 100 euro kost. Dat moet n het veldje "gkp" (gkp = GrondstofKostPrijs in mijn geval) komen.

Maar dat pikt 'ie op 1 of andere wijze niet. Ik heb het ook al op met Integer en Decimal geprobeerd, maar iets doe ik daar niet goed. Hij maakt het veld gewoon blanco.

Hoe doe je dit grapje voor numerieke velden (danwel valuta) ?
 
Je begint zo langzamerhand een vraag te stellen die afwijkt van de vraag van Isabelle. En dat is niet de bedoeling natuurlijk. Ik zou zeggen: maak een eigen vraag aan, en zet daar dan een bestandje bij (desnoods een uitgebreide versie van mijn voorbeeld) waar we mee kunnen stoeien!

@Isabelle: is je vraag ondertussen zo beantwoord? Zo ja: kun je hem dan op <Opgelost> zetten?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan