Jump to content
  • 0

Rapport op basis van zoekopdracht


meh1965

Question

Ik gebruik Filemaker Pro Advanced en heb een database gemaakt waarin ik per dag invoer wat ik aan boodschappen heb gekocht. Een veld is de boodschap, een ander veld d datum waarop de boodschap is gedaan.

Ik wil nu een zoekfunctie waarbij ik de datum invoer bij voorkeur gekozen uit een lijst met alleen de in de database voorkomende data en dat er dan een overzicht wordt getoond van alle, op die datum gekochte boodschappen.

Kan iemand mij uitleggen hoe ik dat kan realiseren?

 

Alvast erg bedankt.

Link to comment

14 answers to this question

Recommended Posts

  • 0

afhankelijk natuurlijk van hoe je database is gemaakt is er natuurlijk een oplossing :D

Je geeft zelf aan je voert in de datum en de boodschappen dan neem ik aan 1 datum met daarachter alle boodschappen? of bij elke boodschap een datum?

Gebruik gewoon de zoek opdracht met datum en je krijgt dan een overzicht met de boodschappen gedaan op die datum.

Ik denk dat je dit niet bedoelt maar ik wil maar aangeven zo simpel is het in feite. Hoe je dit verder opbouw is geheel afhankelijk van hoe ingewikkeld je het wilt maken. Met portalen , met een rapport overzicht, met een sum veld als je nog de prijzen er achter zet enz enz.

Link to comment
  • 0

Bedankt voor je reactie.

Iedere boodschap heeft een eigen datum.

De zoekopdracht is inderdaad een optie. Maar voor mij niet mooi genoeg :-)

Ik wil het liefste een scherm waar ik een datum kan kiezen / invoeren / aanklikken op een kalender en dat ik dan een overzicht krijg van alle boodschappen met die datum wat ik dan ook kan sorteren op nummer (iedere boodschap heeft een eigen, uniek nummer; wat ik eerst heb gekocht op die dag heeft #1, het tweede artikel dat in het boodschappenwagentje is gegaan heeft #2 etc.) Ik wil in dat overzicht ook kunnen zien in welke volgorde de boodschappen het wagentje zijn ingegaan.

Link to comment
  • 0
Ik wil het liefste een scherm waar ik een datum kan kiezen / invoeren / aanklikken op een kalender en dat ik dan een overzicht krijg van alle boodschappen met die datum wat ik dan ook kan sorteren op nummer (iedere boodschap heeft een eigen, uniek nummer; wat ik eerst heb gekocht op die dag heeft #1, het tweede artikel dat in het boodschappenwagentje is gegaan heeft #2 etc.) Ik wil in dat overzicht ook kunnen zien in welke volgorde de boodschappen het wagentje zijn ingegaan.
Ik heb een voorbeeldbestand met een kalender gebruikt om het bijgaande voorbeeld te maken. Het selecteren van een bepaalde datum is daarin opgelost. Ik ben alleen niet zeker wat je precies met de volgorde doet/wilt, want de volgorde van invoer is volgorde van weergave zonder sorteren en als je de boodschappen invoert terwijl je ze in de winkelwagen gooit, dan hoef je dus niet meer te sorteren .....

Boodschappen.zip

Link to comment
  • 0

Wat menno als voorbeeld geeft is wat ik al aangaf een portaal en een datum veld. Het is op zich geen hogere wiskunde maar als je zelf zoiets wil maken (daarom zitten tenslotte op dit forum :D ) dan moet je gewoon beginnen bij de basis

Kijk naar de help file van portaal en global fields en die van relaties en door te proberen ga je de opbouw herkennen die in de voorbeelden staan en het kwartje gaat vanzelf vallen. Probeer niet te denken aan het eind resultaat maar start met een basis en ga op die manier ervaring opdoen. Je moet weten hoe je een relatie maakt, , hoe je een global field maak en wat het gevolg is als je werkt met een global field in de relatie. Kijk ook eens naar voorbeelden en er gaat een wereld voor je open. succes

Link to comment
  • 0

Als je mijn voorbeeld even als starthulp gebruikt voor je eigen project dan zou je het redelijk gemakkelijk op kunnen lossen door de volgende stappen in dezelfde volgorde te volgen:

 

  • Je moet een database van jezelf hebben waar je deze kalender wilt gaan gebruiken.
  • Je kopieert in de lijst met tabellen de tabel "Kalender" en plakt deze in de lijst met tabellen van jouw database.
  • Je kopieert alle scripts uit het bestand kalender, daar moet je straks nog wat wijzigen, want nu wordt het met fouten gekopieerd, maar dat is nu niet erg.
  • Pas nu het script "Startup" aan: Laat daarin alleen de lijnen 3,4 en 5 staan. Alleen lijnen veld instellen (2x) en de aanroep van het script "Set kalender" blijven over.
  • Het script "Startup" is nodig om het kalendertje straks te initialiseren en dat zou je kunnen doen met een script-trigger "on layout entry", maar dat is slechts een van een heleboel mogelijkheden. Het is net wat je eigen smaak is, maar het is wel een verplichting. Laat het maar eens weg en kijk wat het kalendertje doet.
  • Pas het script "Get Date" aan naar jouw eigen behoefte: De eerste 2 stappen blijven onveranderd staan, alles wat daarna komt kan weg en kan je vervangen voor jouw eigen zoekopdracht met de in het kalendertje gekozen datum.
  • Tenslotte kopieer je het hele kalendertje met alle knopjes e.d. naar de layout in jouw DB waar je het wilt gebruiken. (Je kan hem bijvoorbeeld ook op een popover zetten en een script-trigger aan die popover koppelen die "startup" uitvoert en de popover weer sluiten vanuit het script "Get Date" oid)

Als je dit exact volgt moet het probleemloos werrken en als je meer layouts hebt waar je dit gebruikt en eventueel met andere velden, dan breidt je het script "Get Date" gewoon verder uit.

Link to comment
  • 0

Ik begrijp in deze niet de rol van de portal. Ik heb een database met drie velden:

 

1-datum = de datum waarop ik de boodschap heb gekocht

2-de boodschap = het artikel dat ik heb gekocht

3-volgnummer = hoeveelste artikel dat ik die dag heb gekocht

 

Als ik op 1-1-2015 eerst een appel, dan een fles wijn en tot slot een doos kroketten heb ik dus drie records:

1)1-1-2015 / 1 / appel

2)1-1-2015 / 2/ fles wijn

3)1-1-2015 / 3 / doos kroketten

 

Als ik vervolgens op 3 februari 2015 eerst een doos kaarsen koop en dan een pakje kauwgom heb ik daarna 5 records:

1)1-1-2015 / 1 / appel

2)1-1-2015 / 2/ fles wijn

3)1-1-2015 / 3 / doos kroketten

4)3-2-2015 / 1 / doos kaarsen

5)3-2-2015 / 2 / pakje kauwgum

 

Wat ik nu wil is een scherm waar ik een datum kan kiezen. Als ik datum 1-1-2015 kies wil ik de volgende records zien:

1)1-1-2015 / 1 / appel

2)1-1-2015 / 2/ fles wijn

3)1-1-2015 / 3 / doos kroketten

 

Als ik datum 3-2-2015 kies, wil ik de volgende records zien:

1)3-2-2015 / 1 / doos kaarsen

2)3-2-2015 / 2 / pakje kauwgum

 

Het overzicht dient gesorteerd te zijn op volgnummer.

 

Ik lees dat een portal is om gerelateerde records weer te geven. Maar ik heb toch helemaal geen gerelateerde records want ik heb maar één tabel?

 

Wat ik wil is (volgens mij) eigenlijk een zoekopdracht. Als ik een zoekopdracht begin en ik kies de datum 1-1-2015 worden mijn records gefilterd. Er worden dan drie records weergegeven. Maar ik wil de records zien in een lijst. Dus ik wil niet door de records heen bladeren maar de records onder elkaar op een lijst zien.

Wat ik mooi vind aan wat Menno heeft gemaakt is dat ik in de kalender waar ik de datum kies, al kan zien of er records gevonden zullen worden omdat de data waarop ik boodschappen heb gedaan afwijkend van kleur zijn. In eerste instantie gaf ik aan te willen kiezen uit een lijst van data waarop ik boodschappen heb gedaan maar als ik vanaf een kalender kan kiezen waarop de data waarop ik boodschappen heb gedaan afwijkende gekleurd zijn, vind ik dat ook prachtig.

De reden is dat ik niet uit mijn hoofd weet op welke data ik boodschappen heb gedaan en dus bij het kiezen van de datum waarvan ik de gedane boodschappen wil zien, al kan zien voor welke data de zoekfunctie meer dan nul records zal weergeven.

 

Misschien begrijp ik iets niet helemaal. Dan hoor ik het graag.

Link to comment
  • 0

Als je in jouw eigen bestand zorgt dat de tabelnaam van jouw "Boodschappen" tabel exact overeen komt met die van mijn voorbeeld moet het geen probleem voor je opleveren.

 

Dus de tabelnaam moet dan zijn: Boodschappen

Het veld "ID" moet je toevoegen of je moet daarvoor jouw veld "volgnummer" gebruiken door het te hernoemen in "ID"

 

Als je dat doet dan werken de instructies uit mijn vorige bericht.

 

De truuk van het alvast tonen van de beschikbare data zit in "Voorwaardeljke opmaak" van de datum-veldjes. Ik gebruik daar ExecuteSQL() voor:

ExecuteSQL ( "SELECT ID FROM Boodschappen WHERE Datum=?" ; "" ; "" ; Self ) ≠ ""

Als er 1 of meer ID's worden gevonden door de query, dan wordt het veld groen, da's alles.

 

In het voorbeeldscript "Get Date" wordt de bijna identieke formule gebruikt:

ExecuteSQL ( "SELECT ID FROM Boodschappen WHERE Datum=?" ; "" ; "" ; $datum )

ipv "Self" staat daar de variabele "$datum" die is gemaakt met stap 2 vanuit de script-parameter. Die query wordt dan gebruikt om alleen de zoekopdracht uit te voeren wanneer er ook een resultaat mag worden verwacht.

 

De portal is een veel gebruikte techniek, maar ik vind hem zelf ook niet handig voor zoiets als jouw "probleem". Als je toch die kant op zou willen, dan zou je het veld datum kunnen gebruiken als "bron" voor een invoerlijst .... na een tijdje wordt die lijst wel erg lang, want kalender-data worden wel toegevoegd, maar gaan er niet meer uit.

Link to comment
  • 0

Ik heb mijn voorbeeldje een klein beetje aangepast, zodat het gemakkelijker wordt om het te gebruiken als basis. Het startscript zou je niet meer nodig hebben. In plaats daarvan heb ik een script toegevoegd: "Open kalender" en een "popover-button". Al met al zou je dan alleen het script "Get Date" nog moeten aanpassen aan je eigen behoefte, de rest kan je gewoon kopiëren en plakken in de volgorde die ik eerder aangaf.

Boodschappen_v2.zip

Link to comment
  • 0

Als de kalender helemaal groen is dan gaat de query van de conditional formatting niet goed en is het resultaat een vraagteken .... dat is ook niet leeg en dus wordt de achtergrond groen.

Wat is de naam van je tabel? Wat is de naam van je datum-veld? Heb je een veld met de naam ID? Of heb je de query aangepast?

Nu is de query dacht ik: "SELECT ID FROM Boodschappen WHERE Datum = ?" en de namen in de query moeten exact overeenkomen met de namen in de DB, anders werkt het niet.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...