Scheidingsteken

Status
Niet open voor verdere reacties.

joew

Gebruiker
Lid geworden
26 jul 2009
Berichten
7
Dag iedereen,

Ik heb in Access een tabel gemaakt met een keuzelijst met invoervak. De inhoud van de keuzelijst wordt geïmporteerd uit een andere tabel in dezelfde database.

In een formulier in deze database wordt bij elke record de inhoud van de keuzelijst weergegeven (m.a.w. de aangevinkte waarden worden voor elke record opgesomd). Deze waarden worden in het formulier gescheiden door een puntkomma.

Is er iemand die me kan vertellen of ik de opmaak hiervan kan wijzigen? In plaats van de puntkomma's tussen de waarden zou ik liever een alineamarkering of regeleinde hebben, zodat elke waarde in het tekstvak van het formulier op een nieuwe regel begint.

Alvast heel erg bedankt!
 
Misschien is het het tijdstip, maar ik heb geen idee wat je bedoelt. Maar een keuzelijst in een tabel? Slecht idee....
Ik vermoed dat je een veld hebt gemaakt met meervoudige waarden (doorgaans ook een slecht idee) waarvan de opgeslagen waarden inderdaad in de tabel met een puntkomma zijn gescheiden, en op het formulier middels selectievakjes worden getoond. Daar is volgens mij niks aan te veranderen.

Je zou (veel beter idee) uiteraard van het multivalue veld af kunnen stappen, een aparte gekoppelde tabel gebruiken en de geselecteerde waarden tonen via een normale keuzelijst. Dan heb je een betere database, en het gewenste resultaat :).
 
Dag OctaFish,

Bedankt om mee te denken!

Mijn database ziet er als volgt uit. Ik heb een tabel tblMerken, in die tabel zit o.a. het veld Merknaam. Dat veld bevat meer dan 1000 waarden, allemaal merknamen. Verder zit er in mijn database ook een tabel tblWinkels. In de tabel tblWinkels zitten gegevens over een aantal winkels. Die tabel houdt ook bij welke merken elke winkel verkoopt. In de tabel tblWinkels kan ik daarom in het veld Merken aanvinken welke merken elke winkel verkoopt. Het veld Merken is een keuzelijst, dat gekoppeld is aan het veld Merknaam uit de tabel tblMerken. Ik hoop dat ik het op die manier goed uitleg.

Nu zou ik graag een formulier maken dat alles wat gebruiksvriendelijker weergeeft. Het formulier dat ik voorlopig heb, somt bij elke record van de tabel tblMerken op welke merken elke winkel verkoopt. Dat ziet eruit als een tekstvak, en tussen de waarden staat een puntkomma. Ik vroeg me dus af of die standaard puntkomma ergens gewijzigd kon worden in bijvoorbeeld een regeleinde of alineamarkering.

Dank je!
 
Je hebt het (helaas) exact zo ingericht als ik vermoedde. En dan luidt het antwoord dus: nee, dat kan niet naders. En ik raad je deze oplossing dus ten zeerste af. En dan niet alleen omdat je nooit het door jou gewenste effect krijgt, maar vooral ook omdat je merkentabel veel te groot is om fatsoenlijk mee te werken. Je had al gemerkt dat het kiezen in tabel en formulier blijkbaar met een keuzelijst gaat, maar dat je de gekozen waarden vervolgens ziet als (punt)komma gescheiden waarden. En dat kan dus niet anders, omdat je naar de waarden uit één veld kijkt. Access maakt voor de multi-value velden een interne tabel aan (die uiteraard aan jouw tabel is gekoppeld) maar zet dus alle gekozen waarden in één veld. En dat moet je op de een of andere manier scheiden. Daarvoor wordt het Windows scheidingsteken gebruikt. En dat kan nooit een Regeleinde zijn.

De reden dat ik zelden dit soort velden gebruik, is tweeledig (er zijn zelfs wel meer argumenten te bedenken). Ten eerste vind ik het invullen ervan nogal omslachtig, ten tweede is het verwerken van de gekozen waarden een rampenplan. Je kunt bijvoorbeeld multi-value velden niet op een normale manier in een query gebruiken. Ook belangrijk: je gooit in één klap alle compatibiliteit met andere database systemen het raam uit. Nou hoeft dat laatste niet gelijk een probleem te zijn, maar toch... Maar het aantal records in jouw keuzelijst (1000) maakt het gebruik van de lijst al tot een rampenplan in mijn ogen.

Zoals ik al zei: de oplossing is relatief simpel te doen, door de tabel tblMerken te koppelen aan een koppeltabel tblWinkel_Merk, waarin je voor elk merk per winkel een record aanmaakt. Wat Access zelf dus ook doet bij het mulit-value veld. Alleen heb je nu zélf alles in eigen hand, want je kunt nu een subformulier gebruiken om de merken te kiezen, of een keuzelijst etc. En de tabel kan veel beter beheerst worden (actief/inactief bijvoorbeeld, filteren op land etc.)
Verder is de tabel tblMerken ook veel makkelijker door te koppelen aan bijv. een tabel tblModellen en ga zo maar door.
 
Nogmaals heel erg dank voor je respons.

Ik begrijp dat ik het niet handig heb aangepakt, en je legt in je argumenten duidelijk uit waar het probleem zit. Bedankt daarvoor!

Helaas is mijn kennis niet groot genoeg om verder te kunnen met de uitleg die ik in je laatste alinea kan lezen. Ik zit dus wat vast, vrees ik. Indien je het ziet zitten om mij een iets uitgebreidere uitleg te geven over hoe ik het beter kan aanpakken, zou dat fantastisch zijn, maar ik begrijp het uiteraard als je daar niet de tijd voor hebt. Ik moet dan nog even bedenken hoe ik nu verder moet.

Even een domper zeg, ik stopte hier al zoveel tijd in ...
 
Het is niet voor niets een hulp forum :). Op zich is de aanpak die ik voorstel niet zo moeilijk. Je moet dus in ieder geval een extra tabel maken, die je koppelt op basis van de velden WinkelID en MerkID, die uit tblWinkels en tblMerken komen. Dan kun je dus per winkel een record maken voor de merken. ik zou daar dus ook een veld [Actief] aan toe voegen zodat je later nog kunt muteren als een winkel een bepaald merk niet meer verkoopt, mocht die situatie zich voordoen. Mijn ervaring met winkels is dat zo'n Ja/Nee veld onmisbaar is :).

Ik zou zelf een keuzelijst maken op het formulier frmWinkels met een keuzelijst (niet met invoervak dus) die je koppelt aan de tabel tblWinkels_Merken zodat je de gekoppelde merken ziet. Door daar een klikactie aan te hangen, open je dan een popup formulier met twee keuzelijsten, waarvan de ene variant de niet niet gekozen merken laat zien, en de andere de gekozen merken. Daar heb je twee varianten van, die je maar even moet uitproberen. De ene selecteert wat jofeler als de andere. Door in de linker lijst merken te selecteren, kun je met een knop records 'overhevelen' van de tabel tblMerken naar de tabel tblWinkels_Merken. Die laatste tabel staat dus in de tweede keuzelijst. Omgekeerd: als je in de rechterlijst op een of meerdere merken klikt, verdwijnen die uit de lijst en zie je ze weer in de linkerlijst.

Sluit je vervolgens het popup formulier, dan kom je weer terug in het formulier frmWinkels, waar je de bijgewerkte keuzelijst ziet met de gekozen merken.
Het is wat werk om te maken, maar het werkt als een tierelier. Hoe weet ik dat? Omdat ik dat zo al een paar keer gemaakt heb natuurlijk :)
 
Dag OctaFish,

Wat ontzettend vriendelijk, bedankt! :)

Deze uitleg klinkt al veel helderder voor mij, en ik denk dat ik hiermee wel aan de slag kan. Ik probeer het morgen even uit en kom daarna naar je terug. Bedankt!
 
Prima, en als je er niet uitkomt: post een voorbeeldje mee, dan kijken we met je mee. En anders heb ik dus zelf nog wel een voorbeeldje dat je als inspiratie kunt gebruiken.
 
Hoi OctaFish,

Ik zat het hier net even te bekijken, maar liep toch wel weer snel vast.

Ik maakte een nieuwe tabel in mijn database, en plaatste daarin twee velden (Merk en Winkel). Ik legde al een relatie tussen het veld Merk uit mijn nieuwe tabel met het veld Merk uit de bestaande tabel tblMerken, en ik legde ook al een relatie tussen het veld Winkel van mijn nieuwe tabel en het veld Winkel uit de bestaande tabel tblWinkels. Ik hoop dat dat juist is.

Kan je mij vertellen hoe ik het nu aanpak om deze nieuwe tabel te vullen met inhoud? De inhoud van het veld Winkel, dat zijn de namen van de winkels, moet ik die allemaal opnieuw ingeven? En de inhoud van het veld Merk weet ik al helemaal niet ... Het zit overigens zo dat elke winkel meerdere merken verkoopt, ik weet niet of ik dat al vertelde.

Alvast heel erg bedankt!
 
Ja, dat had je al verteld :). Ik zou de brontabellen koppelen op basis van een sleutelveld, meestal een getal. Dat werkt een stuk handiger en houdt de tabellen kleiner. Het vullen kun je handmatig doen op een los formulier waarin je met keuzelijsten werkt. Alleen moet je ze dan stuk voor stuk doen en dat is tijdrovend.

Ik gebruik dus een onafhankelijk formulier met twee bronkeuzelijsten (winkels en merken) en daartussen een keuzelijst die de combinaties laat zien. Die is dus gekoppeld aan de nieuwe tabel. Je selecteert links één winkel, en rechts de gewenste merken. Met een druk op de knop kopieer je de records naar de nieuwe tabel, en eventueel weer terug.
 
Ik probeer en probeer, maar geraak er voorlopig niet.

Mag ik misschien een voorbeeld van jou zien, OctaFish?

Bedankt!
 
Het is natuurlijk altijd beter om een voorbeeld van jou te gebruiken, maar wellicht heb je hier al genoeg aan om het zelf uit te dokteren. Veel plezier ermee :)
 

Bijlagen

  • Keuzelijsten.zip
    97,8 KB · Weergaven: 38
Hoi OctaFish,

Wat een schat aan informatie kreeg ik daar van jou in dat voorbeeld. Heel erg bedankt!

Mag ik even de database toevoegen die ik ondertussen heb, en je enkele vragen stellen? Ik maakte mijn keuzelijsten in het formulier frmGegevensBeheren. Je zal zien dat ik de lay-out en manier van werken volledig gebaseerd heb op jouw voorbeeld, ik hoop dat dat OK is voor jou?

Allereerst zit ik nog met één probleem: in de middelste keuzelijst verschijnen wel de geselecteerde merken, maar die komen daar onder hun nummer (ID), terwijl ik liever gewoon de merknaam zou willen zien, natuurlijk. Ik krijg dat niet meteen in orde. Zou jij mij kunnen helpen, alstublieft?

Vervolgens stel ik ook vast dat wanneer ik in de linker keuzelijst (die van de winkels) een winkel selecteer, de naam van die winkel niet mooi zwart blijft. Er komen wel van die stippelijntjes rond, waardoor ik nog wel kan zien dat die geselecteerd is, maar ik zou het duidelijker vinden als die echt zwart geselecteerd blijft. Is dat mogelijk?

Heel erg bedankt voor je hulp, ik heb hier al zoveel mee bijgeleerd! Bekijk bijlage Kinderkleding.zip
 
Dat eerste is natuurlijk prima; daar is HelpMij natuurlijk ook voor! Ik heb het principe uiteraard ook niet uitgevonden, dus neem gerust over wat je kan gebruiken. Dat je de nummers ziet en niet de tekst, komt omdat je maar één kolom gebruikt in je keuzelijst. Maak daar 2 van, en stel de breedte van de eerste kolom in op 0 cm, en de tweede op de breedte van de keuzelijst. Dus bij Kolombreedten zet je: 0cm;6,399cm.
Wat betreft het geselecteerd blijven van de winkel: dat gebeurt nu niet (meer) omdat je een requery doet in de functie Verversen op de keuzelijst lstWebwinkels. Die regel(variant) zat niet in mijn functie, en daar was een goede reden voor: hij is volkomen overbodig. Deze keuzelijst is zo'n beetje de enige waarvan de recordbron niet verandert, dus een requery erop doet helemaal niks. Ja, de selectie opheffen :). En laat je dát nu nou net niet willen!
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan