Access formulier

Status
Niet open voor verdere reacties.

giten

Gebruiker
Lid geworden
2 feb 2009
Berichten
80
Ik heb twee simpele vragen over formulieren in Access, maar ik kom er niet uit:

1. Ik wil in een formulier alle velden van een tabel laten zien waarvan ik één veld kan selecteren m.b.v. een keuzelijst met invoervak.
2. Ik wil via een formulier een tabel kunnen vullen waarbij ik weer één veld selecteer en de andere velden kan intypen.

Ik werk met access 2007-2010.
 
Ik snap je vraag niet. Een formulier baseer je, als je gegevens wilt muteren, op een tabel (of een bewerkbare query). Dan kun je alle velden bewerken. Hoef je niks voor te doen. Daarnaast kun je door de tabel bladeren met de navigatieknoppen. Wil je een specifiek record bewerken, dan moet je dat opzoeken. Dat kan met een keuzelijst, maar dat is dan een keuzelijst die niet aan een veld is gekoppeld. Het heeft weinig zin om een keuzelijst van een van de velden te maken.
Ik zie eerlijk gezegd ook geen verschil tussen vraag 1 en 2, want die hebben naar mijn idee dus hetzelfde antwoord :).
 
Waarschijnlijk denk ik te moeilijk.

Ik zal proberen uit te leggen waar ik vastloop

1. Ik heb nu twee soorten formulieren: één met alle velden waarbij ik kan navigeren en één met een keuzelijst waarbij ik een veld kan selecteren, maar niet navigeren (beneden bij record staat '1 van 1'). Die laatste moet ik hebben, maar dan met alle velden (ik kies er een, en de rest verandert mee).

2. Ik wil niet kunnen muteren (dat lukt inderdaad prima met dat formulier), maar een record kunnen toevoegen waarbij ik 1 veld selecteer en de andere velden intyp.

Even ter aanvulling: ik heb twee tabellen, één tabel met kaarten (nummer, omschrijving enz.) en één tabel met oplagen van diezelfde kaarten (nummer, datum, oplage). Ik wil dus een formulier waarbij ik een van de nummers in de tabel 'kaarten' selecteer, dat handmatig aanvul met datum en oplage en dat vervolgens bijvoeg in de tabel 'oplagen'.
En dan niet via de navigatie onderin, maar met een knop 'voeg toe'.


Ik hoop dat het zo wat duidelijker is.


P.S. Het opzoek-formulier is gelukt, dankzij je handleiding hoofdstuk 8. Nu het invoer-formulier nog.
 
Laatst bewerkt:
Dat is net zo makkelijk :).
Als je het goed hebt gedaan, heb je het tweede formulier gebaseerd op de tabel Oplagen. Daarin heb je dan de velden Nummer, Datum en Oplage staan en wat je nog meer nodig hebt. Van het veld Nummer kun je een keuzelijst met Invoervak maken (cboNummer) die je dus koppelt aan het veld [Nummer]. Die keuzelijst geef je een Recordbron die is gebaseerd op de tabel Kaarten, en daar zitten dan de velden Nummer en Omschrijving in. Ik weet niet of je wilt zoeken op kaarnummer of op omschrijving, maar wil je zoeken op nummer dan is nummer het eerste veld, wil je zoeken op omschrijving dan gebruik je het tweede veld, of maak je de kolombreedte van het eerste veld 0cm. Dan staat-ie er wel (en wordt hij ook opgeslagen) maar zie je alleen de omschrijving. Wat jij wilt dus.

Als je de knoppen <Nieuw record> (die zowel onderin het navigatievenster als bovenin de werkbalk) staan niet wilt gebruiken, kun je met de wizard simpel een extra knop maken.
 
Het begint erop te lijken. Maar hoe zorg ik nou dat ik het nummer uit de tabel kaarten kan selecteren (zodat daar niet zomaar wat wordt ingevuld) en dat ingevoerd wordt in de tabel oplagen (samen dus met datum en oplage, wat ik zelf invul).
 
Niets zo makkelijk als jezelf citeren :)
Die keuzelijst geef je een Recordbron die is gebaseerd op de tabel Kaarten
Je kunt hem ook met de wizard maken, als je het zelf niet kunt. In dat geval zou ik het bestaande tekstveld Nummer eerst verwijderen, en daar op die plek de wizard loslaten.
 
Ja, dat heb ik gedaan, maar hoe krijg ik dan voor elkaar dat ik met de knop 'record toevoegen' dat nummer in de andere tabel wordt ingevuld?

Ah, volgens mij is het gelukt.


Hartelijk dank voor alle moeite, ik geloof dat ik er nu (bijna) ben!


Oh ja, toch nog een vraag: ik heb een formulier 'kaart toevoegen' gemaakt die, jawel, een kaart toevoegt. Als ik dat formulier echter opstart zie ik het eerste record. De gebruiker moet dat eerst weghalen. Is het ook mogelijk om de velde leeg te laten?

En als ik toch bezig ben: ik ben nog niet helemaal tevreden over de beveiliging, ik ben bang dat gebruikers het (kunnen) verprutsen door velden te wijzigen terwijl ze alleen moeten raadplegen of toevoegen. Kan ik daar iets voor instellen?

En nog iets: hoe plaats ik in een formulier alle bijbehorende oplagen als ik een bepaalde kaart selecteer (dus niet allen het eerste record van die kaart).
 
Laatst bewerkt:
Ik snap nog niet helemaal wat je nu wilt, maar zolang je dat zelf weet is het natuurlijk prima :).
Wat je laatste vraag betreft: ik zou altijd maar één formulier gebruiken; het is nergens voor nodig om aparte formulieren te maken voor invoegen of raadplegen. Da's toch dezelfde gegevensbron en formulieropmaak? Zonde van je tijd dus om daar 2 formulieren van te maken.
Een formulier kun je op verschillende manieren laten werken; zet je de eigenschap <Gegevensinvoer> op Ja, dan start het formulier met een nieuw (leeg) record. Staat hij op Nee, dan zie je het eerste record. Wil je niet dat gebruikers dat eerste record verbouwen, dan zet je <Bewerken toestaan> op Nee. En zo kun je allerlei eigenschappen instellen. Dat doe je dan bijvoorbeeld met knoppen op een startformulier, die dan het formulier openen in de gewenste modus.

En nog iets: hoe plaats ik in een formulier alle bijbehorende oplagen als ik een bepaalde kaart selecteer
Doe jezelf een groot plezier, en gooi alle bijlagevelden (daar hebben we het toch over?) weg. Maak een tabel en subformulier aan dat je koppelt aan de kaarten, en sla alleen de verwijzingen op naar de bijlagen. Dat houdt de bijlagen makkelijk bewerkbaar (gewoon in een map te openen) en de database klein.
 
Blijkbaar snappen we elkaar niet, voor de duidelijkheid heb ik de database maar even bijgevoegd. Ik wil hem graag als volgt opbouwen:

- Tabel 'kaarten' geeft een overzicht van de verschillende kaarten.
- Tabel 'oplagen' geeft een overzicht van de oplagen van die kaarten (ASN is het nummer)

Verder moeten de gebruikers het volgende kunnen:

- Een kaart kunnen opzoeken (formulier 'kaart zoeken', lijkt te werken)
- Een kaart kunnen toevoegen (formulier 'kaart toevoegen', lijkt te werken)
- Een overzicht maken van alle oplagen van een bepaalde kaart
- De tabel 'oplagen' aanvullen als er een nieuwe oplage van een kaart wordt besteld (formulier 'oplage invullen', werkt niet).

Kan natuurlijk zijn dat ik veel te ingewikkeld denk.
 

Bijlagen

  • ASN.zip
    95,1 KB · Weergaven: 58
Zoals ik al eerder zei: je kunt met één formulier volstaan. Dus het niet-snappen is in dit geval eenrichtingsverkeer :). Verder heb je in je voorbeeld de tabellen niet gekoppeld, en gebruik je voor ASN een tekstveld als sleutelveld. Is niet handig, en al helemaal niet omdat dat veld 255 tekens groot is! Legt (als je dat veld gaat vullen) een veel te groot beslag op de ruimte in de db. Verder gebruik je niet overal de juiste veldinstellingen, zoals het veld [Gewicht papier] dat een tekstveld is i.p.v. een getalveld. Met als gevolg dat je er teksten als 'sdf' in kan zetten. Lijkt mij toch niet wenselijk. Sowieso moet je ook naar de verschillende veldlengtes van de velden kijken, want 255 tekens is voor de meeste velden veel te groot.
En zorg er dus voor dat je tabellen aan elkaar te koppelen zijn op basis van een sleutelveld. Nu heb je in [Oplagen] een waarde '727wDP' in het veld ASN staan, wat niet in Kaarten staat. Kan je de tabellen nooit meer koppelen. Sowieso mag ASN nooit een sleutelveld zijn in [Oplagen].
Nog een tip: als je een voorbeeldje maakt, zet er dan waarden in die logisch zijn, zodat je kunt controleren of wat je te zien krijgt ook echt datgene is wat je wílt zien. Onzinteksten maken het beoordelen er niet makkelijker op :).
 
Dank voor de tips!

Ik koppel eigenlijk nooit tabellen, dat doe ik altijd met query's, ik zal eens proberen.
ASN is het enige veld met unieke waarden, dus de enige mogelijkheid voor een sleutelveld. Is het dan handig om een extra veld als sleutelveld op te nemen?

1 formulier is inderdaad misschien wel het handigste, maar hoe zorg ik er dan voor dat de knoppen 'kaart toevoegen' en 'oplage toevoegen' de juiste tabellen vullen? En ik ben er ook nog niet uit hoe ik ervoor moet zorgen dat alle oplagen (of misschien de laatste 10) van een bepaalde kaart worden getoond. Moet dat met een gesplits formulier?
 
En om te laten zien hoe het zou moeten, hier een aangepaste versie.
Ik koppel eigenlijk nooit tabellen, dat doe ik altijd met query's, ik zal eens proberen.
Hele slechte zaak; in queries kun je geen Referentiële Integriteit afdwingen, en daar loop je nu al met je voorbeeldje op stuk. RI is zo'n beetje het allerbelangrijkste aspect van een goede database, en jij gebruikt dat nooit? Tijd voor een cursus! (zie handleidingen sectie :) )
 

Bijlagen

  • ASN.zip
    40,1 KB · Weergaven: 75
Ja, hier heb ik wel wat aan. Ik worstel ermee, voor jou een fluitje van een cent. Maar ik moet het natuurlijk ook zelf kunnen, dus die cursus zal ik inderdaad eens een keer doorlopen.

Bedankt voor alle moeite!
 
Ik heb een paar aanpassingen aan het formulier (zie bijlage) gedaan, maar ik ben op zoek naar nog één aanpassing: is het ook mogelijk om op meer velden uit de tabel 'kaarten' te zoeken?
 

Bijlagen

  • ASN.zip
    71 KB · Weergaven: 41
Dat kan zonder meer. Maar daar heb je een nogal uitgebreide filterfunctie voor nodig, zeker als je 'm dynamisch wilt hebben. In de bijlage zit een voorbeeldje.
 

Bijlagen

  • Filteren.zip
    104,2 KB · Weergaven: 53
Wat een snelle reactie weer.

Oef, zo wordt het voor mij al weer gauw te ingewikkeld, maar het is gelukt. Ik heb de selectievelde gekopieerd en de queryvelden daarna aangepast. Ik weet niet of het de meest nette oplossing is, maar het werkt.

Dank voor je hulp weer!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan