acces - variabele print query - meervoudige selectie maken *BIJNA* opgelost

Status
Niet open voor verdere reacties.

fran ber

Gebruiker
Lid geworden
27 jan 2011
Berichten
6
Goedendag forum,

het is me nog steeds niet gelukt om het laatste
probleem dat ik met deze acces database heb
op te lossen:
een query maken voor het afdrukken van
gegevens met een meervoudige selectie.

alle andere dingen doen het wel, dus
ik wil het graag aan de praat krijgen.

je kan de acces database hier downloaden:

http://www.xs4all.nl/~palf/acces/tr totaal - export rev export upd.zip

(want hij is 400 kb, en via dit forum kun
je maar tot 97 kb uploaden.)
het is in MS office acces 2007 formaat.

Wanneer je bij formulieren het formulier
"basis_selectie_formulier" opent heb je
een aantal afdruk mogelijkheden.

als je op de afdrukknop naast "kunstenaars"
klikt, krijg je een afrdukvoorbeeld, maar je
krijgt alle namen te zien. dat is mooi maar niet helemaal
mijn bedoeling. bovendien drukt hij ook namen af zovaak als ze
geselecteerd zijn, dus er zitten duplicaten in die ik er
ook uit zou willen halen. maar dat is van later zorg;

- in "tr formulieren", "tuf nieuw" kan je gegevens invoeren
- in "tr formulieren", "basis_selectie_formulier" kan je een
naam of namen selecteren om af te drukken

- in "tr tabellen, "rump adressen" komen alle gegevens terecht
- in "tr tabellen, "nieuwkunst" komen alle kunstenaars namen terecht
- in "tr tabellen, "basis_selectie" komt de af te drukken selectie terecht

de query waar het om gaat staat onder "tr queries, "voorkeur kunstenaars"
deze is o.a. gebaseerd op de tabel "rumpff3 adressen".
hier wil ik een selectie maken voor het afdrukken, die de namen
moet beperken tot de namen die gekozen zijn in het formulier
"basis_selectie_formulier"


ik heb geprobeerd om een koppeling te maken met de tabel
"basis selectie", want daarin staan de namen
die je hierboven selecteert. maar wanneer ik dat probeer
te doen dan krijg ik:

"kolommen waarin meerdere waarden voor een record kunnen worden opgenomen,
kunnen niet binnen een relatie met meerdere kolommen worden opgenomen."

ok, maar hoe moet ik dan de query formuleren.

mopet ik eerst een samenvoegquery maken voordat
ik meerdere namen kan afdrukken

( bij office.microsoft.com vond ik:

SELECT field_1[, field_2,…]
FROM table_1[, table_2,…]
UNION [ALL]
SELECT field_a[, field_b,...]
FROM table_a[, table_b,…];

) als voorbeeld van het maken van een samenvoegquery

of moet ik een verbindingstabel maken
om dit tot stand te brengen.

als ik dit criterium toepas bij "tr queries", "voorkeur kunstenaar":

[forms]![basis_selectie_formulier]![_kunstenaar_num]

(onder kunstenaar niw), wordt er volgens mij een naam geselecteerd,
en kunstenaar niw is een keuzelijst gebaseerd op een getal.

wanneer ik bijvoorbeeld als selectie criterium bij "tr queries", "voorkeur kunstenaar"
het getal "1" invoer onder "kunstenaar niw value" dan maakt hij
inderdaad de goede selectie, en kiest kunstenaar 1.
hij haalt de namen van de kunstenaar uit "tr tabellen, "nieuwkunst"

dus misschien moet ik aleen de namen van de kunstenaars omzetten
in het id nummer?

ik hoop dat iemand van jullie me verder kan helpen,

vriendelijke groet, frank
 
Is er een reden dat je je vraag opmaakt als een gedicht? I love a poem as good as the next man, maar het maakt de tekst wel hééééél erg lang..... Bovendien (maar dat kan jij niet weten) heb ik de db liever in 2003 format, omdat ik geen 2007 gebruik. Liever lees ik een lang gedicht ;)
 
acces en poëzie

ha michel,

was me er helemaal niet van bewust dat het een poëtische opbouw had, verdorie, zo doen ze dat dus, die dichters. ik probeerde zo duidelijk mogelijk te zeggen wat ik wil, en ook waar je het moet zoeken. ik was bang dat mensen anders door de bomen het bos niet meer zouden zien.

mijn vraag kan ook veel korter: wie kan me helpen de afdruk-query te maken waarbij een selectie van meerdere mensen de voorwaarde is.

ik zou hem graag in 2003 opslaan, maar dat kan niet omdat er velden met meerdere waardes in worden gebruikt, en acces wil hem daardoor niet wil opslaan in een ouder formaat. jammer en pech.

bedankt voor je snelle reactie!

frank
 
dat kan niet omdat er velden met meerdere waardes in worden gebruikt
Oops.... Dit moet je hééél snel afleren; dit is zo'n beetje de grootste fout die je kunt maken in een database-ontwerp! Ik was ook al een beetje geschrokken van de zin:
"kolommen waarin meerdere waarden voor een record kunnen worden opgenomen, kunnen niet binnen een relatie met meerdere kolommen worden opgenomen."
die waarschijnlijk met hetzelfde probleem te maken heeft....

Maak 'even' een nieuwe database aan, uiteraard in 2003 format, en kopieer daar alle tabeldefinities in. De gegevens hoef ik even niet, want die zijn toch waardeloos (voor de database; uiteraard niet voor jouw). En de queries, formulieren, en rapporten uiteraard! Krijg je wat 'normale' data mee, dan mag dat uiteraard wel, want zelf testwaarden invoeren is ook geen pretje voor de helpers...
En dan kijk ik er met alle plezier even naar.
 
Oveigens is het niet zo heel erg netjes om een zelfde vraag in twee forums tegelijk te stellen; zeker niet zonder vermelding er van. De oplossingen die je in het Officeforum hebt gekregen hoef ik dan uiteraard niet meer aan te dragen... En ik neem aan, dat je er niet op uit bent om ons nutteloze tijd te laten steken in vragen?
 
ok, octafish, je hebt gelijk,

maar in het andere forum (officeforum) is al een hele tijd geen reactie meer gekomen, en het is daar een beetje vastgelopen.
ik heb het daarom hier gepost, en ook bij pchelper, in de hoop dat er hier andere lezers zouden zijn. en dat is volgens mij ook zo.

je suggestie om het om te zetten naar 2003 vind ik wel een goede, maar ik zit een beetje moed te verzamelen, omdat het erg veel werk is.

ik zal nooit meer iets posten zonder te vermelden dat het elders ook is gepost, als ik dat gedaan heb, dus aanvaard mijn excuses.

vriendelijke groet,

frank
 
Laatst bewerkt:
Doe alleen de onderdelen die belangrijk zijn voor de vraag; meestal zijn dat maar een paar tabellen/queries/formulieren etc. Zowiezo kun je formulieren en qeuries probleemloos overzetten. Het gaat in jouw geval denk ik om de tabellen die je verkeerd gebruikt. Wil je dat we ook naar de koppelingen kijken, dan hebben we wel alle tabellen nodig...
 
query probleem, zelfde vraag, anders gesteld

het is me toch gelukt de database te converteren naar versie 2003. misschien lukt een versie eerder ook nog wel als iemand dat wil zien. het probleem is door de conversie ook duidelijk en veranderd: in 2003 kan je inderdaad geen meervoudige selectie doen, (ik wist niet dat meervoudige selectie een slecht idee was, maar goed, nu weet ik dat dan wel), en het is nu dan ook een 'gewone' lijst geworden, en zie: waarschijnlijk is het probleem niet zozeer de meervoudige selectie, maar dat de lijst met namen die achter kunstenaars wordt weergegeven in het formulier "basis_selctie_formulier" gebaseerd is op een tabel waar id-nummer gekoppeld is aan een naam.
dan stuurt het formulier de naam i.p.v. het nummer naar de query, en daar gaat het mis, want de query wil geen naam, maar een nummer.
op andere plaatsen doe ik hetzelfde ook, en daar gaat het wel goed, maar ik weet niet meer hoe ik het id nummer terug kan halen en dat naar de query te sturen, stom he? enfin, ik hoop dat iemand het hier wel ziet

database 2003 versie te downloaden op:

http://www.xs4all.nl/~palf/acces/ta_conversie_2003.zip

alvast bedankt voor de moeite, ik zal ook een update van deze kwestie doen op officeform, alhoewel daar al een tijd helemaal geen reacties meer komen
 
Laatst bewerkt:
Leg nog eens uit wat je precies wilt, want je laatste db laat vermoed ik andere tabellen en formulieren zien dan wat je eerst aanbood. Bovendien liggen er in deze db hele vreemde koppelingen tussen de tabellen, dus dat moet eerst worden opgelost, loijkt mij.... En ik snap nog niet helemaal wat je wilt kunnen doen met de formulieren.
 
Het is een adressen database. In het formulier "tarrum nw" kan je adressen invoeren en aangeven dat iemand tot een bepaalde groep behoort, of een interesse heeft, etc. Vanuit "tarrum nw" kan je ook met knopje links onder naar formulier "basis_selectie_formulier" gaan. vanuit daar kan adresetiketten printen, en selecteren wat je wilt printen, bijvoorbeeld de mensen van "voorkeur 1" of de mensen die in amsterdam wonen, of de mensen die bij kunstenaar "klaas bolhuis" horen.
al deze queries die doen het, behalve de kunstenaars, en ik denk nu dat dat komt omdat de namen van die kunstenaars uit een tabel worden gehaald, en in een andere tabel worden opgeslagen. bij de adrestiketten query zit ook de lijst met namen van die kunstenaars, maar ik denk dat hij wordt opgeroepen als nummer, en dat op het moment dat ik die selectie op basis van kunstenaar maak ik aan kom zetten met een naam i.p.v. een id, en dat daarom de query een foutmelding geeft. maar misschien heb ik het mis.

wanneer ik bijvoorbeeld in de query "kunstenaar niw" als selctie criterium "1" doe, dan pakt hij inderdaad kunstenaar 1, dat is klaas bolhuis. waneer ik de naam "klaas bolhuis" als criterium typ dan geeft hij niets.
het zou dus zoiets als kunnen zijn als:

[forms]![basis_selectie_formulier]![_kunstenaar_num] (dit geeft een naam) (haal dan uit tabel "nieuwkunst" het id op basis van die naam) (en gebruik dat als criterium)

maar hoe zeg je dat in acces?
 
Laatst bewerkt:
Vanuit "tarrum nw" kan je ook met knopje links onder naar formulier "basis_selectie_formulier" gaan.
Nee dus, dat knopje ontbreekt.
Als ik het zo zie, heb je een beetje teveel werk gestoken in je queries, want je zou alles met één query kunnen doen. En één selectieformulier. De gedachte daarbij is, dat je de filtering op het formulier gebruikt om je adressen te selecteren. En aangezien al je queries in wezen gelijk zijn, op de selectie na, kun je dus met één query uit de voeten.
In een gekoppelde tabel sla je inderdaad het sleutelveld uit je hoofdtabel op. In jouw geval zie je dus in het veld [kunstenaar niw] van de tabel [rumpff3 adressen] die getallen terug.
Jouw fout zit 'm er in dat je in het veld [kunstenaar niw] meerdere waarden opslaat. Zoals ik eerder al aangaf, dat is zo'n beetje de grootste fout die je kan maken in een database. Zo heb je aan Molsde Beentjes bij [kunstenaar niw] ingevuld: 1;7. Dat zijn twee kunstenaars, neem ik aan. En omdat je hier twee kunstenaars invult, kun je die niet koppelen aan je tabel Kunstenaars. Daarin heb je namelijk twee records: 1 en 7.

De oplossing is dus relatief simpel, en hopelijk voor jou niet teveel werk: Maak een aparte tabel ([rumpff3_kunstenaars] of zo) en leg daarin vast welke personen aan welke kunstenaars worden gekoppeld. Voor Molsde Beentjes komen in die tabel dus twee records te staan. Eén met de waarden 2676 en 1, en één met de waarden 2676 en 7. En zo moet je dus alle records opsplitsen.
Dat betekent dus ook dat je formulier anders moet: je moet van de nieuwe tabel een (sub)formulier maken, dat je onderbrengt op je formulier [tarrum nw]. Als je het goed inricht, kun je nu voor elke persoon/bedrijf meerdere kunstenaars toevoegen, elk met een eigen record.
Als deze structuur werkt, kun je de queries aanpassen.
 
heel erg bedankt voor je reactie. ik ga nu kijken hoe ik het kan toepassen in de database. het lijkt me ook dat het met één query zou moeten kunnen, maar weet niet precies hoe. ik ga het proberen.

het navigatieknopje is niet zo belangrijk maar is er volgens mij wel, links op formulier "tarrum nw" zit naast zoek knop met verrekijker de knop "tarrum export"

volgens mij is de meervoudige selectie die ik gebruik inderdaad een nieuwe mogelijkheid van acces 2007. je vindt dat een slecht idee, ik ben wel benieuwd waarom, vind je het vanuit database-ontwerp standpunt iets dat je niet zou moeten doen. ik vraag het gewoon uit interesse.
 
Laatst bewerkt:
Het is zeker geen nieuwe optie in Access, want je kunt altijd meerdere waarden in één veld opslaan als je dat zou willen. Alleen: het maakt je database in één klap zo niet waardeloos, dan toch veel minder bruikbaar. De reden is heel simpel: een database werkt alleen goed als je in een veld een unieke waarde opslaat. En dat geldt zeker voor velden die je wilt koppelen aan een andere tabel. Want dan heb je één waarde nodig om te kunnen zoeken in de gerelateerde tabel. Zodra je in dat veld meer waarden opslaat, zoals jij doet, kun je de gezochte waarden nooit meer terugvinden in de brontabel. Om op jouw voorbeeld te blijven: de waarde [1;7] is geen waarde in de tabel Kunstenaars. Daarin heb je de waarden [1] en [7]. Zelfs als het in de nieuwe Access wel zou kunnen, is het af te raden, want je werkt jezelf gruwelijk in de nesten als je op die manier gaat werken.
Overigens zijn ze bij Microsof volgens mij niet helemaal goed bij hun hoofd, want in de nieuwste versie kun je ook in een tabel berekeningen laten uitvoeren. Ook dat is een handeling die in alle database bijbels ten strengste is verboden....
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan