Vragen, Opmerken, Reacties en Tips voor de Access cursus

Status
Niet open voor verdere reacties.
Je hebt je leven gebeterd dus dat is helemaal in orde ;)
Misschien is het handig als je een db post met jouw formulier; ik snap namelijk nog niet helemaal waar je precies op doelt. Als je met de wizard een keuzelijst maakt, kun je op een gegeven moment kiezen of hij aan een veld moet komen te hangen of niet. In het eerste geval heb je een tabelkoppeling gemaakt, dus wordt alles wat je veranderd middels de keuzelijst opgeslagen, in de tweede variant is het een niet-gebonden keuzelijst, die je kunt gebruiken om te filteren o.i.d. Maar altijd op een formulier :)
Je kunt uiteraard ook een bestaand veld ombouwen naar een Keuzelijst, maar dan moet je daarna alles met de hand instellen. Ook goed te doen overigens.
 
Bekijk bijlage Planning_YB.zip


Alvast bedankt voor je hulp Michel!

In bijlage een soortgelijk probleem.
In T_opdrachten staan opdrachten, komende van opdrachtgevers (T_opdrachtgevers)
Ik wil nu de gepresteerde uren per opdracht ingeven in T_Uren

Hiervoor heb je een form F_gepresteerd. Ik wil van het veld opdracht een combo box veld maken zodat ik de opdracht niet moet intypen maar ga ophalen uit de tabel T_opdrachten. In een tabel lukt me dit gemakkelijk maar omdat je dat afraadt wou ik het dus in het formulier invoegen.

ps ik heb eerst je advies gevolgd, maar het lukte niet helemaal. Hij maakte nieuwe opdrachtIDs aan, terwijl de opdracht ID gelinkt moet zijn aan de ingegeven opdracht. Zo moet hij bij het ingeven van de (al bestaande) opdracht ook de andere velden aanpassen: duur, opdrachtgever, prioriteit, etc / maar het is wel gevaarlijk want je kan bestaande opdrachten op deze manier gaan wijzigen vrees ik...
 
Laatst bewerkt:
Ik heb de oplossing ondertussen via een collega doorgekregen.
Het was eigenlijk helemaal niet moeilijk: een formulier gebaseerd op de basistabel, het veld waar je naar wilt zoeken verwijderen. Vervolgens een combo box aanmaken gebaseerd op een opzoektabel en opslaan als het veld in de basistabel waar je naar wou zoeken.
Het lijkt nu zo simpel, maar het lukte me dus even niet...
 
Hallo OctaFish,

ik ben sinds deze week bezig om de cursus door te nemen. Hulde voor al je werk!
Ik heb tijdens mijn HBO opleiding in mijn tweede jaar kennis gemaakt met Access maar veel is nu, vier jaar later, verwaterd.
Daarom helpt het om een handleiding er bij te hebben. Ik ben inmiddels bij hoofdstuk 8 maar zit echter met het volgende:
Voor mijn werk moet ik het bestaande klantenbestand aanpassen en nieuwe functies toevoegen.
Allereerst wil ik voor werknemers in de winkel (slagerij) een Access formulier maken waar zij in de tabel "Klanten" een specifieke klant op kunnen zoeken.
De database bestaat uit 3285 klanten dus komen dubbele achternamen vaak voor, ik wil dan ook zoeken op postcode + huisnummer.
Deze postcode en huisnummer moeten de medewerkers in de winkel dan zelf invoeren in invulveld van een formulier waarna dan gezocht wordt naar deze gegevens.
Hoe kan ik dit het beste bereiken?
Ik ben al bezig geweest met keuzelijsten en dergelijke maar dat werkt nog niet zoals t hoort.
 
Ik zou, voor de flexibiliteit, met meerdere keuzelijsten werken, dus ook een keuzelijst op basis van achternaam. In een keuzelijst kun je ook Adres + PC + Huisnummer opnemen, dus als je de familie Jansen zoekt, en in de keuzelijst 'Jan' intypt, dan zie je niet zo heel erg veel Jansens meer. De juiste is dan snel gevonden en aangeklikt. Omgekeerd geldt natuurlijk ook, in een keuzelijst Postcode kun je dan weer achternamen opnemen. Al zul je voor een postcode toch al gauw 4 of 5 tekens moeten intypen, en dan zie misschien veel meer namen dan als je op achternaam zoekt. Kortom: hoe meer opties, hoe beter.
 
Bedankt voor je snelle reactie, super!
Met lijsten is het inderdaad prima te doen. Het formulier is nu aardig gebruiksvriendelijk.
Dat was het makkelijke gedeelte, nu wordt het moeilijker voor me.
Ik wil graag dat als de klant niet gevonden wordt en er dus een nieuwe klant aangemaakt moet worden dat:
- er op een knop kan worden geklikt waarna er een invulscherm tevoorschijn komt
- op dit invulscherm het nieuwe klantnummer automatisch wordt berekend (met een functie?) en de medewerkers dit dus niet in hoeven te voeren

Ik stel me voor dat ik met invoermaskers en dergelijke moet gaan werken maar welk hoofdstuk kan ik het beste voor dit soort vraagstukken raadplegen?

Alvast bedankt en complimenten voor deze cursus!
 
Ik weet eerlijk gezegd niet of ik dat al behandeld heb; zo niet, dan is dat een mooi onderwerp voor het volgende hoofdstuk :)
Als je met keuzelijsten werkt, ben je eigenlijk al op de helft, want die hebben de eigenschap <Bij niet in lijst>. En daarmee ondervang je exact dit probleem. Met die gebeurtenis kun je twee dingen doen: gelijk een record toevoegen in de onderliggende tabel (met één waarde doorgaans) of een formulier openen en daar de gegevens inkloppen. In dit draadje van 8 november (ja, het onderwerp komt wel eens langs ;) ) staat daar een stukje code voor dat je kunt gebruiken.
Wat er dus gebeurt is heel simpel (en je hebt geen knop nodig): als je een tekst invoert die niet bestaat (zal bij achternaam eerder voorkomen dan bij postcode) dan krijg je de vraag of je de waarde wilt toevoegen. Zo ja: opent het (klanten)formulier. Daar vul je de nieuwe gegevens in, sluit het formulier en gaat dan weer verder op het eerste formulier.
 
Bedankt voor de snelle service!
Ik ga er mee aan de gang.

Ik heb nog een vraag of het stukje code wat bij het te openen formulier moet, waar moet dat in de VBA code van dat formulier geplaatst worden?
Dus dit stukje:

Private Sub Form_Open(Cancel As Integer)
If Not IsNull(Me.OpenArgs) Then Me.txtFunctie.Value = Me.OpenArgs
End Sub

Heb het volgens mij al gevonden maar het werkt nog niet.
Ik kom wel tot: " xxxx staat niet in de lijst, wil je xxxx toevoegen?" maar krijg dan de foutmelding:
"Fout 3008 tijdens uitvoering: De tabel Klanten is exclusief geopend door een andere gebruiker of geopend met behulp van de gebruikersinterface en kan niet door via programmering worden gemanipuleerd."

Foutopsporing leidt tot onderstaande:
DoCmd.OpenForm "frmKlanten", , , , acAdd, acDialog, NewData

Heb je een idee wat ik fout doe?

Bij de DoCmd regel staat bij mij:
DoCmd.OpenForm "frmKlanten", , , , acAdd, acDialog, NewData

En ik zie een andere met:
DoCmd.OpenForm "Klant - details", DataMode:=acFormAdd, WindowMode:=acDialog, OpenArgs:=NewData

Zou het hier misschien aan kunnen liggen?
 
Laatst bewerkt door een moderator:
Graag de "Aanpassen" functie gebruiken en niet om de zoveel minuten een nieuw bericht plaatsen. Ik heb nu je opvolgende berichten in 1 bericht gezet.
 
Die melding krijg je denk ik als je twee formulieren open hebt die op dezelfde tabel zijn gebaseerd. En ik vermoed dus dat het formulier waar je keuzelijst op staat daar één van is. Zonder de db kan ik dat uiteraard bevestigen noch ontkennen...
 
Ik heb op dat moment alleen het formulier open waar de keuzelijst in staat, met dus de bijbehorende NotInList code.
Is het ook mogelijk dat de eigenschappen van het formulier iets blokkeren?
Dit zijn de huidige instellingen Eigenschappen formulier ZoekKlanten.jpg
De foutopsporing blijft terugkomen bij
DoCmd.OpenForm "frmKlanten", , , , acAdd, acDialog, NewData


Beide formulieren zijn op dezelfde tabel gebaseerd, is dat een probleem?
 
Laatst bewerkt:
Ja, dat is een probleem. (Groot probleem zelfs :) ) Waarom zou je dat überhaupt doen trouwens?
Overigens begint je vraag een zelfstandig probleem te worden, en hoort hij in een eigen topic thuis, en niet meer in deze. Die is toch meer bedoeld voor vragen over de cursus. Wat mij betreft mag je dus een nieuwe topic aanmaken voor je vraag.
 
Laatst bewerkt:
Hoi Michel,

Ik kwam in mijn mails de Access cursus tegen van vorige maand.
Daarin wordt het timer event van een form gebruikt om het programma automatisch af te sluiten.

Waarom zou je iedere seconde kijken of het tijd is als je het event kan laten rusten tot het tijd is om af te sluiten?

Timer = De afsluittijd minus de huidige tijd * 1000 msec

Even controleren of de afsluittijd al is geweest natuurlijk.

Voordeel:
1 - Als je gaat debuggen is je werkomgeving een stuk rustiger.
2 - Access doet ogenschijnlijk niets tot die tijd is bereikt.

Share & Enjoy!
Guus
 
Hoi Guus,

Goeie tip! Het onderwerp was in eerste instantie bedoeld om de werking van het event uit te leggen, maar als praktijkvoorbeeld is jouw aanvulling zeker goed bruikbaar. Het feit dat het VBA venster vreemd reageert, met 'spontaan' verspringende cursor, heb ik als het goed is uitgelegd in de cursus. Met de tip om bij bewerken de tijd tijdelijk op 0 te zetten, zodat je gewoon kunt werken. Zal jouw tip z.s.m. uitproberen!
 
Allereerst bedankt voor het maken van de cursus. Is mooi overzichtelijk en leesbaar.

Om even meer duidelijkheid te scheppen voor mijzelf. Een alinea welke voorkomt in de cursus van Access:

"In een database is het mogelijk om tabellen met elkaar te verbinden: er wordt een relatie gelegd tussen twee of meer tabellen. In de spreektaal heet zo’n verbinding jammer genoeg ook een relatie, waardoor het misverstand is ontstaan dat een relationele database een database is waarin je tabellen aan elkaar kunt koppelen. Dat is dus niet zo: een relationele database is gebaseerd op de relationele algebra, en heeft verder niets met tabelkoppelingen te maken."

Kan iemand mij hier een foutief voorbeeld van geven? Aangezien ik het gedeelte niet snap dat tabellen niet aan elkaar worden gekoppeld. Ik denk dat het wellicht daar fout gaat met mijn opzet in een andere vraag.

Bedankt.
 
Ik geef met dit stukje aan dat de terminologie een beetje onhandig is gekozen. In Nederland noemen we een koppeling tussen twee tabellen een relatie, en op grond daarvan zou Access dan een relationele database zijn. Dat is dus niet zo, omdat met 'relationele database' iets anders bedoelt wordt. Meer moet je er niet achter zoeken. In het Engels wordt er wel onderscheid gemaakt tussen Links (koppeling) en Relationship (op databaseniveau). Het is dus, nogmaals, een puur theoretisch punt. Ik probeer in mijn antwoorden dus zoveel mogelijk het woord 'koppeling' te gebruiken, en niet 'relatie'.
 
Beste OctaFish,

Ik heb op dit forum nu pas "ontdekt" dat er via een nieuwsbrief een cursus werd verspreid maar ik vind alleen de link naar hoofdstuk 1. Ik heb een 5-tal jaar geleden een uitgebreide cursus in het volwassenenonderwijs gevolgd maar we werkten altijd met bestaande tabellen. We hebben nooit geleerd een database op te bouwen. En jouw cursus start daarmee. Soms wil met excel iets uitbouwen wat ik eigenlijk beter met acces zou uitwerken maar ik mis de kennis ivm opbouw van een database.
Kan je me alsnog een link bezorgen naar de hoofdstukken van jouw cursus?

mvg,
tkint (lid van excelforum)
 
De hoofdstukken vind je in de Handleidingen sectie, die je kunt vinden op de Hoofdpagina. Daar staan ze allemaal.
 
Leer er van

Het mag ook wel eens vermeld worden hoe waarde vol zo'n cursus is, ik ben er blij mee en leer er weer van.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan