via tabellen wel, via query's niet. Verschil?

Status
Niet open voor verdere reacties.

Johgs

Gebruiker
Lid geworden
19 mei 2011
Berichten
337
Ik gebruik een doorlopend formulier waarin per regel via keuze uit tabellen via keuzevakken de invoer plaats vindt, zo bevat een record o.a. een veld verrichting en een veld medicijn. Invoer via keuzevakken vanuit tabellen werkt prima, echter er zijn weinig verrichtingen en veel medicijnen. Daarom wil ik de tabel voor de medicijnen vervangen door een query die aan de hand van het veld verrichting een selectie maakt uit bijpassende medicijnen. Werkt allemaal prima op één ding na.
Op scherm wordt bij invoer via tabel als bron keuring de bijbehorende iD ingevuld terwijl op het scherm enkel de verrichting zichtbaar, zowel in het invoerveld als ook in de keuzelijst. Gebruik ik voor keuze veld medicijn echter de query dan heb ik in de keuzelijst zowel iD als medicijnnaam en lukt het niet om de naam op scherm te zien en in de tabel de iD waarde in te vullen.
Waarom lukt met een tabel als bron het eigenlijk al vanzelf (Access stelt zelf voor het iD veld te verbergen) en lukt het met de Query als bron niet? Gebruik momenteel Access 2007.
 
Je vraag is te vaag (omdat we geen db hebben) om daar een antwoord op te geven. Op zijn minst moeten we de query zien die je nu gebruikt.
 
De query werkt, op zich een heel simpele, selecteer medicijnen die in de medicijntabel gekoppeld zijn aan een bepaalde verrichting. krijg keurige tabel met het gevraagde.
Probleem is hoe ik vanuit die query die Id ingevuld krijg en wel de naam op scherm.
Omdat het niet werkte deels weer gesloopt, zal eens kijken wat ik kan laten zien, kun je enkel een formulier met query opbouw mailen of moet alles wat gekoppeld is meekomen?
 
Probleem is opgelost:
Een kolom van een keuzelijst of keuzelijst met invoervak afhankelijk maken

Geef in het vak van de eigenschap Afhankelijke kolom van de keuzelijst of keuzelijst met invoervak een getal op dat overeenkomt met de positie van de kolom in de keuzelijst of keuzelijst met invoervak. Typ bijvoorbeeld 1 om de eerste kolom in de keuzelijst of keuzelijst met invoervak afhankelijk te maken van het in de eigenschap Besturingselementbron opgegeven onderliggende veld. Bij het tellen van de kolommen moet u de verborgen kolommen meetellen.

Als u de eigenschap Afhankelijke kolom instelt op 0, wordt de lijstindex opgeslagen in plaats van een waarde uit een van de kolommen. Dit is met name handig als u een reeks getallen wilt opslaan in plaats van de lijstwaarde.

Een kolom in een keuzelijst of keuzelijst met invoervak in een formulier verbergen

Typ in het vak van de eigenschap Kolombreedten een 0 voor de kolom of kolommen die u wilt verbergen.

Stel dat u bijvoorbeeld een afhankelijke keuzelijst met invoervak hebt die bestaat uit twee kolommen, een 0,5" brede kolom Leverancier-id en een 2" brede kolom Leveranciersnaam. De kolom Leverancier-id is de eerste kolom in de lijst, dus de eigenschap Kolombreedten wordt ingesteld op 0,5";2". Als u de kolom Leverancier-id wilt verbergen, stelt u de eigenschap Kolombreedten in op 0";2". De kolom Leverancier-id kan nog steeds de afhankelijke kolom zijn, ook al is het een verborgen kolom.


Waarom het met tabellen anders moet worden ingesteld van met query's blijft een raadsel (met tabellen kreeg ik vanzelf de gewenste instelling, met query moest ik instellingen wijzigen.
 
Ik snap niets van je verhaal, en volgens mij klopt het ook niet: een query reageert in een keuzelijst namelijk op exact dezelfde manier als een tabel. Afhankelijke kolom instellen op 0 heb ik nog nooit in mijn leven gedaan, en ook nooit hoeven doen. De afhankelijke kolom is namelijk afhankelijk van de kolommen die in je keuzelijst bron zitten. Heb ik een query met 5 velden, dan kan ik een waarde pakken van 1-5. Die waarde heeft ook niets te maken met de kolombreedten, die stel je in om de juiste kolommen in de juiste breedte te zien. De eerste kolom die je in de keuzelijst ziet, is de kolom waarvan de grootte groter is dan 0cm. Die kolom 'kies' je dus en daar kun je in de lijst op zoeken.

Meestal zet ik de breedte van de keuzelijst op de totale som van de kolombeedten + 0,7 cm. Dus als ik kolommen heb van 0, 2, 3, 2 en 0cm, dan is de keuzelijst 7,7 cm breed. Op die manier voorkom je dat de keuzelijst bij uitklappen een horizontale schuifbalk krijgt. Vind ik fraaier.
Ik zet de waarde die ik wil opslaan altijd als eerste in de query met een breedte van 0cm, want meestal wil je die waarde niet zien. Je wilt er doorgaans ook niet op zoeken, dat wil je met een tekstveld.

Nogmaals: het maakt totaal niet uit of je een tabel of een query gebruikt voor een keuzelijst: het werkt allebei, en allebei op dezelfde manier.
 
Dat verhaal komt van de M$ site.

Maar met exact dezelfde werkwijze ontstaat op dit punt een verschil.
Verschil.jpg

Maar ik dacht het werkend te hebben, echter alleen voor de eerste invoer op de eerste regel van het doorlopend formulier, terwijl als ik de query start met het selectiecriterium van een willekeurige regel die query wel de juiste selectie toont.
Al allerlei dingen geprobeerd zelfs een reeks query's om de laatste waarde te bepalen of met verversen, zelfs opslaan en opnieuw openen, maar het lukt (nog) niet.
 
Je gebruikt, als ik het goed heb begrepen, een doorlopend formulier. Dat is, als je keuzelijsten gaat filteren, geen fijn plan omdat je in je formulier maar één keuzelijst hebt, die je dan toevallig een aantal keren herhaald ziet staan bij alle zichtbare records. Maar het blijft één keuzelijst. En als je die filtert, dan verandert dus de (zichtbare) waarde op alle records. En dat ziet er vreemd uit, want de filtering voor het ene record kan verschillen van andere records. En dan verdwijnt dus de gekozen waarde van het formulier. Dat is in het begin goed schrikken, want een nietsvermoedende gebruiker denkt dan al snel dat het veld ineens leeg is, wat dus niet zo is.

Die tweede afbeelding heb ik dus nog nooit gezien als ik een query gebruik voor een keuzelijst. Heel vreemd. Maar sowieso gebruik ik de wizard eigenlijk nooit, want het is ontzettend simpel om een keuzelijst handmatig te maken. En wizards zijn vaak veel te beperkt. Bijvoorbeeld doordat ze alleen opgeslagen queries kunnen gebruiken, en geen SQL code. Terwijl die gewoon prima werkt. Het blijft een raar pakket, dat Access :)
 
Heb je een alternatief?
Er zullen zo'n 10 waarden zijn voor "verrichting" en alle verrichtingen samen kennelijk een waslijst aan opties voor kolom "medicijn". Dan wel zo prettig als ik daar een voorselectie ik kan maken. Voorkomt gelijk invoerfouten want een medicijn dat bijv. niet IV mag worden toegepast kan dan ook niet op de rekening verschijnen bij die toepassing.
 
Ik gebruik altijd afhankelijke keuzelijsten. Dus als de tweede keuzelijst afhankelijk is van een waarde uit de eerste lijst, dan zorg ik ervoor dat vanuit de eerste keuzelijst de tweede keuzelijst wordt gefilterd op de waarde uit de eerste. Op die manier hou je het overzichtelijk, en kun je nooit fouten maken.
 
Denk dat ik begrijp wat je bedoeld. Klinkt als een simpele en slimme oplossing.
Heb je dan ook de mogelijkheid waarden uit de tweede groep te koppelen aan meer dan één waarde van de eerste groep? Dus in mijn geval middel A wordt gebruikt bij verrichting 1 en bijv. 4?
 
Dat hangt weer van je andere instellingen af. Als je wilt dat elke behandeling met elk medicijn gekoppeld kan worden, dan heb je daar een koppeltabel voor nodig waarin je elke combinatie maakt die je nodig hebt. De keuzelijst is dan gebaseerd op die koppeltabel. Dan komen alle medicijnen dus tevoorschijn bij alle behandelingen.
 
Ik denk dat ik maar kies voor een pop up voor het invullen die bij sluiten overzet naar het doorlopend formulier, dan wordt het een stuk eenvoudiger, krijgt de gebruiker bij invoer veel meer informatie en zijn er nog veel meer koppelingen/selecties eenvoudig te realiseren zoals, koppeling medicijn/vaccin aan diersoort.

Bedankt zover.
 
Waarom gebruik je überhaupt nog een doorlopend formulier? IK vermoed dat je de behandelingen aan een klant/patiënt hangt en dat die dan in een doorlopend formulier staan. In zo'n situatie gebruik ik, zeker als je veel velden in moet vullen, altijd een los formulier dat bij sluiten het hoofdformulier (+subformulier) bijwerkt. Gegevens invoeren in een doorlopend formulier is ook helemaal niet prettig.
 
Omdat ten eerste je vermoeden correct is maar er vervolgens meerdere regels per patiënt moeten kunnen worden ingevoerd, bijv. regel visite, regel onderzoek, regel verrichting/medecijn. Bijv. Consult paard, vaccinatie rhino, vaccinatie inf/tet. onderzoek mest, verstrekking wormkuur. Totaal 5 regels.
Op het doorlopend formulier wordt nu verrichting, diagnose, medicijn en dosering/aantal ingevuld.
Op het pop up kan dan allerlei bijkomende informatie als prijs, wachttijd e.d. aanvullend worden getoond.
 
Vanuit het popup formulier kun je uiteraard ook meerdere regels toevoegen, kwestie van onder de knop Sluiten/Opslaan een vraag hangen met iets als: "Wil je nog een regel toevoegen? Ja/Nee". En dan kan je eindeloos doorbouwen.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan