Subformulieren?

Status
Niet open voor verdere reacties.

Tamara27

Gebruiker
Lid geworden
1 mrt 2010
Berichten
224
Ik heb een databank met meerdere tabellen. De tabellen hebben telkens één gemeenschappelijke veld, de unieke code.

Nu heb ik een formulier waarop ik meerdere gegevens wil plaatsen, afkomstig uit meerdere tabellen.
Voorlopig doe ik dit met subformulieren, maar kan dit ook anders?
Het is namelijk blijkbaar niet zo simpel om alle subformulieren moooi overeen te laten komen.
Bij het ene record bevat het subformulier bijv 1 element, en bij het volgende record zijn er dit 3 ...

Is er een andere mogelijkheid?

Grjts
 
hoe bedoel je dat subformulieren mooi overeen moeten komen?
over het algemeen is de grootte van het subform een vast gegeven op het canvas van het hoofdform.
dus ik begrijp niet goed wat je wilt.
 
Het is zo dat ik meerdere gegevens uit meerdere tabellen nodig heb. De gebruiker kan selecteren welke gegevens hij/zij wilt zien.

Stel het volgende:
Tabel 1: naam, voornaam, geslacht, geboortedatum, adres (+unieke code persoon)
Tabel 2: kinderen (+ unieke code persoon)
Tabel 3: hobby (+unieke code persoon)

Het zou kunnen dat de gebruiker alle mannen mét kinderen wilt zien.
Het hoofdformulier wordt dan gebaseerd op een query die de mannen eruit haalt.
Op basis van de unieke code wordt dan een subformulier gemaakt.

Samen ziet het er dan ong zo uit:
man 1 - kind 1
kind 2
man 2 - geen
man 3 - kind 1
kind 2
kind 3

maar aangezien ik nooit op voorhand weet hoeveel gegevens er in het subje gaan staan, is het moeilijk een mooie beeldschikking te krijgen. Bijkomend hier is, dat dit een simpel voorbeeld is, maar dat er soms tot 5 of 6 subformulieren zijn...

De vraag is dus of er een andere mogelijkheid is dan die subs te gebruiken.
 
Je zou kunnen overwegen om met een Tabcontrol te werken. Daar kun je allerlei velden op zetten, of (sub)formulieren. Als je de indeling op een formulier wilt kunnen aanpassen op basis van de gegevens die je ophaalt met de verschillende queries, kun je overwegen om met VBA de verschillende tekstvakken te ordenen. Als je een consistente naamgeving gebruikt, kun je met de eigenschappen Visible, Top en Left een tekstvak zichtbaar maken en verplaatsen. Als een veld dan leeg is, kan het volgende veld op die plek komen etc.
't Is een beetje puzzelen, maar je kunt het met een relatief simpele code wel maken.
 
Tabel 1 is de persoon tabel. Kinderen zijn ook personen. Je zou om te beginnen aan de persoon tabel twee velden toe kunnen voegen: VaderId en MoederId. Deze personen komen beide in de persoon tabel voor. Verder is de hobby tabel niet belangrijk voor dit probleem.

Alle mannen met kinderen vindt je nu door te selecteren in de persoon tabel:
select * from persoon where VaderId is not null.

Dan krijg je alle kinderen die een vader hebben. Daarnaast wil je alle gegevens van de vaders en alleen de naam van het kind.

select Vader.*, Kind.Naam from persoon Vader inner join persoon Kind on Vader.PersoonId = Kind.VaderId
(Ik heb een alias gebruikt om onderscheid te maken tussen de Vader gegevens en het Kind gegevens.

In een formulier hoef je de query niet zover uit te werken.
Maak een formulier aan op basis van de eerstgenoemde query met de gegevens van de vader. Voeg een subform toe met de gegevens van het kind. Als je het te moeilijk vindt moet je de subform wizard maar eens gebruiken.
Je verbindt het form en de subform zoals in de tweede query Vader.PersoonId = Kind.VaderId oftewel Persoon.PersoonId = Persoon.VaderId oftewel [Tabel 1].Id = [Tabel 1].VaderId.

HTH:D
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan