Posts tonen met het label OoBase. Alle posts tonen
Posts tonen met het label OoBase. Alle posts tonen

zaterdag 29 mei 2010

Twee velden combineren uit één tabel

Het was me al eens gelukt om twee velden te combineren in ooBase met de ingebedde HSQLDB-server van OpenOffice:
http://ctuxboy.blogspot.com/2009/11/keuzelijst-met-meerdere-velden-in.html

Daar ik nu bezig ben met een project, waarbij een externe MySQL-server wordt gebruikt in combinatie met ooBase als front-end applicatie, is de SQL-syntax nu afgestemd op de gebruikte MySQL-server.

Om deze query te verwezelijken dien je enkel volgende syntax toe te voegen in de ontwerpweergave:

CONCAT( `name`, ' ', `firstname` )


In onderstaande schermafdruk wordt alles duidelijk!

dinsdag 1 december 2009

Records zoeken via keuzelijst zonder macro's in ooBase

Soms kan het handig zijn, om dmv een keuzelijst de gegevens van je klanten terug te vinden.

Hoe gaan we te werk:

1. Maak een nieuwe database 'Klanten'.

2. Maak daarin volgende tabellen met volgende velden:

-tblKlanten:-ID: INTEGER(10),Autowaarde aan, (Primaire sleutel)
-Naam: VARCHAR(30)
-Voornaam: VARCHAR(30)
-Telefoon: NUMMERIC(9)

-Dummy:-ID: INTEGER(10), Autowaarde géén, (Primaire sleutel)
-Dummy: VARCHAR(30)


In tabel 'Dummy' maken we één record aan, dus voeg manueel in de velden 'ID' en 'Dummy' de volgende gegevens toe: 1, dummytekst.

De tabel 'Dummy' is eigenlijk een trukje, want deze heeft enkel de functie om het veld'Dummy.ID' in het hoofdformulier straks te verbinden met de 'tblKlanten.ID'.
Verder wordt er niets gedaan met de tabel 'Dummy'.

3.Voer nu enkele namen, voornamen en telefoonnrs. in de tabel 'tblKlanten'.



4.Nu gaan we een query maken van 'tblKlanten', die ervoor zal zorgen dat de velden 'Naam' en 'Voornaam' samen zullen weergegeven worden in de keuzelijst.
OPGELET: Zorg wel de het nieuw aangemaakte veld in de query vooraan staat, en dan pas de 'ID'.




Voor meer details om ivm deze handeling verwijs ik je naar een ander bericht.

5. Maak een formulier aan via de assistent.
Gebruik als tabel voor het hoofdformulier 'Dummy'. selekteer alle velden en voeg ze toe(nadat het formulier is aangemaakt worden deze velden manueel gewist, daar we toch geen gegevens zullen toevoegen aan het hoofdformulier).



6. Bij de volgende stap gaan we een subformulier toevoegen, met als optie 'Subformulier gebaseerd op handmatige selectie van velden.'

7. Bij de volgende stap selecteren we 'tblKlanten' en voegen we volgende velden toe:

-ID
-Naam
-Voornaam
-Telefoon



8. Selecteer de gebonden velden (ID) van beide tabellen, links vind je de velden van het subformulier (tblKlanten), en rechts vh hoofdformulier (Dummy).




9. Voor het schikken vd besturingselementen, zie afbeelding hieronder.



10. Bij de volgende stap kies je de optie 'Het formulier moet alle gegevens weergeven' bij de volgende stap ivm layout laat ik u de vrije keuze, klikdaarna op voltooien.
Je formulier zou er nu zo moeten uitzien ongeveer:



11. Open nu je formulier in de ontwerpweergave Verwijder nu de velden+labels 'ID' en 'Dummy'. Dit doe je door deze aan te klikken en op [Del] te drukken van je toetsenbord.

12.Klik op de optie keuzelijst.
Je kunt nu een keuzelijst 'tekenen' door met je muis-cursor in het formulier te slepen (dit ter grootte ve tekstvak ongeveer), en klik rechts op de keuzelijst, kies daaruit 'Besturingselement...'. Dit opent het eigenschappenvenster vd 'keuzelijst'.



13. Stel volgende gegevens in:

-gegevensveld: ID (dit is van tabel 'Dummy')
-Type lijstinhoud: Query
-Lijstinhoud: qryNaamKlant

14. Open nu de formnavigator.




15. Klik nu met de rechtermuisknop op het subformulier in de navigator om de eigenschappen op te vragen, en kontroleer of de hoofdvelden en slavevelden op 'ID' staan ingesteld. Dit koppelt de tabel 'tblKlanten' vh subformulier aan de tabel 'Dummy' vh hoofdformulier, waarbij in het hoofdformulier de tabel 'Dummy' gekoppeld is aan de 'qryNaamKlant' vd keuzelijst.




16. Vraag nu ook de eigenschappen op van het hoofdformulier via de navigator, en verander de instelling 'Toevoegen toestaan' op Nee.



17. Sla nu je formulier op en sluit deze.

17. Wanneer je formulier opnieuw opstart in het hoofdvenster van ooBase, zou je nu volgend resltaat moeten krijgen:




Wanneer je nu een naam selekteerd in de keuzelijst en het formulier herlaad, om de wijzigingen toe te passen, worden alle gegevens getoond vh betreffende record.
Uiteraard kan je wat aanpassingen doorvoeren, vb. een knop toevoegen om het formulier te herladen ofwel een Macro maken die dit automatisch het formulier herlaad wanneer je een naam selecteert in de keuzelijst.

Succes!

donderdag 26 november 2009

Keuzelijst met meerdere velden in ooBase

Momenteel ben ik bezig een database-applicatie aan het ontwerpen, die kan gebruikt worden voor bv. een kinderdagverblijf.

Daarin zitten een aantal tabellen, die gerelateerd zijn met elkaar, nl:

- Tabel 'tblOuders'
- Tabel 'tblKinderen'

De Tabel 'tblOuders' is gelinkt met 'tblKinderen', dus een één-op-veel relatie, één ouder heeft één of meerdere kinderen.

Ik heb een formulier ontworpen 'Beheer Ouders', deze bevatten alle contactgegevens vd ouders.
Dan heb ik nog een formulier 'Beheer Kinderen', deze bevat alle gegevens vd kinderen, en een ook een gerelateerde keuzelijst 'Ouders'.

In deze keuzelijst selecteer je gewoon welke 'ouder' bij welk 'kind' hoort.

Bij het aanmaken van een keuzelijst via de assistent kun je maar één weergave-veld selecteren, wat voor problemen kan zorgen in de praktijk.
Vb. Stel dat je als weergave-veld de 'naam' ve ouder hebt geselecteerd, op zich geen probleem. Als je ouders hebt met dezelfde naam, dan heb je wél een probleem, dan komen dezelfde namen enkele keren voor in de keuzelijst, maar welke kind heeft nu welke ouder?.

Hoe kan je dit oplossen?

We zullen ervoor zorgen dat de naam én de voornaam, dus twee velden ve tabel in de keuzelijst voorkomen.

1. Selekteer het betreffende besturingselement (keuzelijst) en ga naar het eigenschappenvenster.

2. Klik op het tabblad gegevens en selekteer bij 'type lijstinhoud' SQL, en bij 'lijstinhoud' klik je op het knopje met de drie puntjes.



3. Nu kun je je tabellen/queries 'manipuleren'. We voegen nu de betreffende tabel toe, in mijn geval 'tblOuders'.

4. Dubbelklik op 'ID' uit deze tabel

5. Na maken we een nieuw (niet-bestaand) veld aan en typen volgende gegevens thv veld:

"Naam" || ' ' || "Voornaam"



6. Om het proper te houden geven we ook nog een 'alias' aan dit veld, vb. NaamVoornaamOuders, en selekteren bij volgorde 'oplopend'.

7. Sleep nu het nieuw aangemaakte veld naar links, zodanig deze voor het veld 'ID' staat.
Je kunt deze 'nieuwe' tabel testen door deze 'query' uit te voeren.

Voila nu heb je een keuzelijst met twee velden zoals ik de afbeelding hieronder.



Succes!