Beginnersfout tabellen/query, het leggen van de juiste relaties

Status
Niet open voor verdere reacties.

Access2010

Gebruiker
Lid geworden
10 feb 2011
Berichten
116
Forumleden,

Ik heb een probleem, waar ik niet uitkom. Met mijn database ben ik begonnen met een tabel, tabel erbij enz. Julie kennen dat denk ik.
Query maken ook geen probleem. Wat relaties leggen en vanuit de query een formulier.
Basic. Nu kom ik een probleem tegen.

Ik heb een grote tabel met basis info over de gebeurtenissen. Daarin vul ik in kenteken, personeelsnummer enz. In en andere tabel staan bijv. de chauffeursgegevens (n.a.w. enz.) . gegevens en in tabel 3 de gegevens van de voertuigen.

De bedoeling is dat er in het formulier zo info komt uit de 3 tabellen. Dat lukt prima.

Nu het probleem. Maak ik een nieuw veld aan dan zet Access voor mij alle gegevens in de 3 tabellen, waarbij de eerste tabel keurig gevuld wordt met de relevante gegevens en de andere tabellen ook, maar met niets daarin. Maakt wel nieuwe records aan in de tabellen.

Wat mijn bedoeling is Tabel 1 vullen met nieuwe data en de andere zijn dus puur ondersteunend. Die bevatten data die dus wel in het formulier zichtbaar moeten zijn, maar niet in de tabel chauffeur en voertuigen moeten leiden tot lijsten met lege records.

Ik heb gelinkt op kenteken in algemene tabel/voertuigen en personeelsnummer de andere link algemene tabel/chauffeursgegevens.

Het zit vlgs. mij in het leggen van relaties.

Wie geeft het verlossende antwoord)en', zoek al een aardig aantal uren.

Met dank,

Access2010
 
Je probleem begint eigenlijk al in regel 2/3:
Wat relaties leggen en vanuit de query een formulier.
Basic.
Waarom gebruik je een query als basis voor je formulier? Als ik het goed begrijp, wil je gebeurtenissen vastleggen m.b.t. chauffeurs en voertuigen. Laten we deze tabel voor het gemak even tGebeurtenissen noemen. Een query die is gebaseerd op de 3 tabellen heeft wel zin voor rapporten e.d., maar je formulier zou alleen gebaseerd hoeven te zijn op de tabel [tGebeurtenissen], want dat is de tabel die je wilt vullen. Daarbij heb je uiteraard Chauffeurs en Voertuigen nodig, en die haal je op met keuzelijsten op basis van de betreffende tabellen. Extra gegevens uit de overige tabellen die je op je formulier wilt zien trek je vervolgens uit je keuzelijsten, en zet je in niet-afhankelijke tekstvelden. Op die manier bereik je twee dingen: je vult de tabel die je wilt vullen (gebeurtenissen) en je maakt nooit extra records aan in de overige tabellen. Sterker nog: doordat je de andere tabellen niet gebruikt, kun je ook niet per abuis een veld veranderen.
Oftwel: even terug naar de tekentafel ;)
 
OctaFish,

Dank je voor de snelle reactie.

Laat dit even op mij inwerken. Ga even terug naar de tekentafel en wat oefenen in een andere database.

Als het niet lukt, meld ik mij.

Access2010
 
Octafish,

Ik ben aan het rommelen geslagen. Ik begrijp je baseert het formulier dus op een tabel. Dan maak ik een keuzelijst voor de chauffeur/dus het personeelsnummer. En dan begrijp ik even je verdere opmerking niet:

Extra gegevens uit de overige tabellen die je op je formulier wilt zien trek je vervolgens uit je keuzelijsten, en zet je in niet-afhankelijke tekstvelden.

Hoe krijg ik dan de gegevens als rijbewijs, woonplaats, telefoonnummer uit keuzelijsten??

Wat mij om weet ik veel redenen wel lukte was de gegevens uit de velden halen (Beschikbare velden) Deze werken dus ook. Ik veranderde het personeelsnummer en bij refresh kwam de juiste chauffeur beneden in het formulier.

Hoe meer je weet, des te minder, dat blijkt wel.

Mooie hobby aan het worden. Wat even snel leek, wordt nu tot kunst verheven.

Mag ik nogmaals je reactie als hulplijn??

Access2010
 
Het is redelijk simpel, maar je moet het uiteraard wel even weten. wat jij gedaan hebt, de velden in een query zetten, is ogenschijnlijk de meest logische optie, maar heeft als nadeel dat je de gegevens direct kunt aanpassen. Ook als je dat niet wilt. Plus, je moet het formulier bijwerken om ze te zien. Zoals ik al zei, het kan een stuk fraaier, namelijk door de gegevens uit de keuzelijsten uit te lezen. Alleen: dan moeten ze er uiteraard wel inzitten. En meestal heb je dat ook wel gedaan, want in een keuzelijst Chauffeurs zul je niet alleen het PersoneelsID hebben, maar kun je ook de naam. Bovendien kun je ook woonplaats, telefoonnummer en rijsbewijsnummer in de rijbron van de keuzelijst zetten. En dat is precies waar je in je formulier gebruik van maakt: je kunt die kolommen namelijk rechtstreeks in een tekstveld zetten.
In een voorbeeldje: in je keuzelijst Chauffeur heb je de velden PersoneelsID, naam, woonplaats, telefoonnummer en rijsbewijsnummer.
De keuzelijst koppel je aan het veld PersoneelsID in je tabel, want dat wil je uiteraard opslaan. Vervolgens maak je 4 tekstvakken, en die geef je de volgende Besturingselementbron:

txtChauffeur: =Me.cboChauffeur.Column(1)
txtWoonplaats_Chauffeur: =Me.cboChauffeur.Column(2)
txtTelefoon_Chauffeur: =Me.cboChauffeur.Column(3)
txtRijbewijs_Chauffeur: =Me.cboChauffeur.Column(4)


Het resultaat is nu, dat als je een chauffeur kiest in de keuzelijst, de tekstvakken automatisch gevuld worden. Easy Peasy!
En: je kunt nooit per abuis een waarde veranderen, want de tekstvakken zijn niet meer gekoppeld aan welke tabel dan ook. Snel, en veilig!
 
Octafish, Beste Michel,

Dank voor je reactie.

Ik heb gemaakt een nieuwe tabel, met de door jou opgegeven velden.

Maak een keuzelijst en selecteer daarin de genoemde velden.
Koppel PersoneelID aan die van de tabel. Dit werkt.
Dan voeg ik in de besturingsbron van het veld Telefoon: txtTelefoon_Chauffeur: =Me.cboChauffeur.Column(3) (Dit is jou code)

Klik op weergeven en zie:

#Naam? en de besturingsbron is veranderd in: [txtTelefoon_Chauffeur: =Me].cboChauffeur
Access heeft .Column3 weggelaten en haakjes gezet. Dus niet wat ik wil.

De keuzelijst geeft wel alles weer, maar dat wil ik zo niet. Het moet in de tekstvakken verschijnen

Ben nu even van het pad af. Hoe kom ik weer terug?? Wordt nu wel heel moeilijk te begrijpen.

Ik hoor graag. Werk met 2010.

Dank als altijd.

Access2010
 
Laat de code eens zien die je gebruikt als Rijbron van je keuzelijst; daar zit denk ik zo het probleem. Je kunt pas iets uit een keuzelijst halen, als het er in zit. Ook een instinker: als het aantal kolommen van de keuzelijst op 1 of 2 staat, kun je nog zoveel kolommen toevoegen als je wilt, je zult er niks meer uit kunnen halen dan de eerste 2. Dus als je 5 velden hebt in de rijbron, dan moet het aantal kolommen ook op 5 staan.
Overigens moet je de formules pakken vanaf de dubbele punt: alles daarvoor is slechts een aanduiding van de tekstvelden. De formules beginnen dus met =
 
Laatst bewerkt:
Michel,

Ik ga weer eens kijken. Moet een oplossing te vinden zijn zoals jij aangeeft.

Dank als altijd.

Access2010
 
Maak anders een voorbeeldje van je db, dan kunnen we een voorzetje doen...
 
Octafish,

Een deel heb ik opgelost door het maken van een subformulier. Geprobeerd en het lukte. Toch is dit niet hetgeen ik zoek.

Heel simpel iets:

Kenteken
Wagennummer
Merk

Kenteken selecteren via de keuzelijst en de velden ernaast (of op een andere plek in het formulier) vullen met Wagennummer en merk.

Besturingselementbron: oefenen
Rijbron: SELECT [Voertuigen].[Id], [Voertuigen].[Kenteken], [Voertuigen].[Wagennummer], [Voertuigen].[Merk] FROM [Voertuigen] ORDER BY [Kenteken];

Ik maak een veld via ontwerp ab| in Access. Zet de formule =Me.cboOefenen.Column(2) in besturingselementbron en in het veld komt: #Naam? en de expressie is veranderd in: =[Me].[cboOefenen].[Column](2). Toen heb ik Column(2) vervangen door de naam van een kolom (Merk) en dus ook niets. Alles combinaties gemaakt, niets reageert alleen #Naam!


IK wacht met belangstelling de mening van de expert die mij wijst op mijn ongetwijfeld voor de hand liggende fout.

Mijn dank.

Access2010

Ergo, het zal wel voor de voeten liggen en niet verder in de straat (de oplossing), maar ik zie het niet.
 
Vraagje: wat is oefenen? Is dat de naam van je keuzelijst? Want in de tekstvelden verwijs je naar cboOefenen. En dat heeft net wat meer letters ;) De namen moeten uiteraard wel hetzelfde zijn...
 
Dan de hamvraag: heb je de naam van de keuzelijst aangepast, of de naamverwijzing in de code? En wat is het resultaat?
 
De keuzelijst heb ik oefenen genoemd en dat ook (met een hoofdletter typefout) in de code. Resultaat is van alles wat ik gedaan heb. Niets. #Naam

Access2010
 
Me is waarschijnlijk fout, want ik vermoed dat je de code in het Besturingselementbron van het tekstvak gebruikt. Het zou dan dit moeten zijn:
=Oefenen.Column(2)
 
Octafish,

Wat ik ook doe, het werkt niet.

Misschien kun jij een voorbeeldje maken.

Access2010
 
Geen probleem; ik heb voor dit soort 'gevallen' een standaardje klaar staan ;) Kijk maar eens naar de manier waarop het eerste formulier (<Keuzelijst + Afhankelijke tekstvakken>) werkt.
 

Bijlagen

  • Keuzelijsten.rar
    93,1 KB · Weergaven: 104
Octafish,

Moet nu wel heel gek lopen wil het niet gaan lukken. Moet eens even gaan studeren hoe en wat toepasbaar is. Het probleem is zoals bij heel veel collega Access adepten. Je begint met een tabel en gaat dan rennen naar het volgende hoofdstuk en voor je het weet zit je ergens midden op zee en ben je vergeten te leren kompas lezen. Dan is er net als in de echte wereld een reddingsbrigade. Mag ook hier wel eens gezegd worden.

Michel DANK!!!

Access2010

Top service via deze site!!

Access201
 
Forum,

Uiteindelijk ben ik er achter gekomen dat er in VBA aan de keuzelijst iets gehangen moet worden

Nu werkt e.e.a. perfect:

Private Sub Keuzelijst0_AfterUpdate()
If Me.Keuzelijst0.Value <> "" Then 'if the dropdown is selected, not empty
Me.Tekst2.Value = Me.Keuzelijst0.Column(2)
Me.Tekst5.Value = Me.Keuzelijst0.Column(4)

End If
End Sub

Dank voor alle support.

Access2010
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan