Vasthouden geselecteerde tekst bij meervoudige selectie

  • Onderwerp starter Onderwerp starter EdHa
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

EdHa

Verenigingslid
Lid geworden
6 mei 2012
Berichten
57
Ik heb een database met (onder meer) tabellen van 'klanten' en 'voorkeuren', waarin ik in een formulier heb gemaakt waarmee ik klanten kan bewerken. In dit formulier staan de gegevens van de klant en is een keuzelijst met meervoudige selectie opgenomen. Daarin kan ik een aantal voorkeuren van de klant selecteren. De tekst van deze voorkeuren (of voor mijn part het volgnumer van de voorkeur uit de tabel voorkeuren) wil ik in de database opslaan, gekoppeld aan de klant die ik op dat moment bewerk. De tabel 'klanten' bevat daartoe een veld 'voorkeuren'.

Dus, ik open de database, dan het formulier, waarin ik de klant van mijn keuze oproep, uit de tabel klanten worden alle gegevens van die klant opgehaald, maar de (eerder) geselecteerde voorkeuren in de meervoudige keuzelijst worden niet gemarkeerd getoond en zijn dus niet bewaard gebleven, terwijl alle andere gegevens van de klant (naam, adres, woonplaats) gewoon worden vastgehouden. Alle voorkeuren zijn weer uitgezet en ik moet ze opnieuw selecteren.

Hoe houd ik de geselecteerde voorkeuren vast als ik de klant weer ophaal? Moet er in het geval van een meervoudige keuze iets anders worden gedaan om deze aan de tabel 'klanten' toegevoegd te krijgen?

Ben benieuwd.

PS: Ik heb in het forum wel een aantal voorbeelden gezien van meervoudige selecties, maar daar ging het niet om het vasthouden daarvan.
 
Ik snap je formulier niet helemaal; ik krijg de indruk dat je keuzelijst <Voorkeuren> niet is gekoppeld aan het veld Voorkeuren terwijl de rest van de velden wél is gekoppeld. Waarom het veld [Voorkeuren] niet?
 
De keuzelijst is wel degelijk gekoppeld. De gegevens komen uit een query op de tabel 'voorkeuren' die bij bron is opgegeven. Je ziet de voorkeuren ook in de keuzelijst en kunt een meervoudige selectie maken, maar het resultaat daarvan wordt niet 'opgeslagen' in de tabel klanten. Dat gebeurt wel als ik een wijziging aanbreng in het veld adres bijvoorbeeld, die wordt keurig opgeslagen.

Is het soms nodig om de keuzes via zo'n selecteditem statement in VBA te laten uitlezen en in een ander veld te laten opslaan, zat ik te denken, en dan bij initialize bij de volgende keer openen eerst dat veld te laten uitlezen en de keuzes weer te laten selecteren? Iets anders kan ik nl niet bedenken. Is wel een omweg maar mogelijk gedraagt een keuzelijst zich zo.
 
Of bedoel je de koppeling aan het veld 'voorkeuren' in de tabel 'klanten'. Ik heb daarin zoals jij altijd propageert alleen 'numeriek' gekozen in plaats van 'tekst' en de verbinding in het formulier en niet in de tabel gemaakt. Maar misschien is dat niet goed. In relaties heb ik ook een 'een op veel' relatie gelegd tussen dat veld en de ID van de lijst 'voorkeuren'.
 
Een keuzelijst met meervoudige keuze, hoe verwerpelijke die ook zijn, kun je alleen koppelen aan een veld dat ook is ingesteld op meervoudige waarden. En daarna zie je keurig altijd de opgeslagen waarden terug als je bladert. Of dat een numeriek veld is of een tekstveld maakt daarbij niet uit, zolang de waarde die je opslaat met <Afhankelijke kolom> maar overeenkomt qua type met wat je hebt ingesteld op het veld. Als de rijbron dus een getal oplevert van het type Lange Integer, moet je veld ook staan ingesteld op Lange integer.
Ik gebruik zelf overigens ook wel eens een veld met meervoudige waarden, maar heb er elke keer behoorlijke spijt van. Ik heb het punt bereikt dat ik er met een grote boog omheen ga lopen, want het levert veel meer ellende op dan dat je er voordeel van hebt.
 
Betekent dat, Octafish, dat ik in dit geval WEL in de tabel bij opzoeken moet kiezen voor keuzelijst ipv voor tekstvak? Het rare is nl dat als ik de meervoudige selectie er af haal de waarde keurig wordt bewaard en weer getoond als ik dezelfde record weer open met het formulier. Maar zodra ik voor meervoudige selectie kies wordt er niets vastgehouden, ook niet de ene waarde die eerder wel was vastgelegd.
 
Klopt helemaal.
 
En dat werkt inderdaad. Dank.

Alvorens het onderwerp te sluiten is het voor eventuele meelezers misschien goed om nog eens uit te leggen waarom in dit geval jouw algemene advies om dit soort dingen niet in de tabel maar in het formulier te 'regelen' niet opgevolgd moet worden. Of dat er een alternatief is.

Mooie kerst verder en een goede jaarwisseling.
 
Mijn algemene advies is om in tabellen geen keuzelijsten te gebruiken, en dat advies staat nog steeds recht overeind. Daarnaast is mijn algemene advies om in tabellen geen velden te gebruiken met meervoudige waarden, en dat advies staat nog veel harder overeind. Gebruik je echter tóch die laatste variant, dan moet je in formulieren óók een keuzelijst hebben, anders kun je het veld niet vullen. Gelukkig doet Access dat zelf al, als je eerst de tabellen maakt en daarna pas het formulier.
 
Ik begrijp je advies en neem dat ook zoveel mogelijk ter harte, door schade en schande wijs geworden, maar soms kun je volgens mij niet anders, zeker als de database meerdere gebruikers kent die wilt dwingen geen vrije tekst in te vullen, maar voor de uniformiteit zoveel mogelijk door mij aangedragen tekstvariabelen. Zeker als de keus niet uit 2 of 3 dingen is, maar uit tientallen ontkom ik er niet aan die in een tabel onder te brengen en een verwijzing te gebruiken. Of heb jij ook daarvoor een alternatief?
 
Ja, dat kun je nog steeds met een losse tabel en een subformulier of keuzelijst op het formulier oplossen. Je hebt daar geen veld met meervoudige waarden voor nodig.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan