Felix Posted November 21, 2013 Posted November 21, 2013 (edited) . Edited October 4, 2015 by Guest Quote
0 andries Posted November 21, 2013 Posted November 21, 2013 ExecuteSQL ( " SELECT Naam, COUNT ( DISTINCT ( Plaats ) ) FROM plaatsnaam GROUP BY Naam" ; "" ; "" ) is nog niet helemaal correct. Dit is mijn data set: Cornelissen, Delft Cornelissen, Delft Cornelissen, Rotterdam Cornelissen, Amsterdam Peters, Brussel Peters, Brussel Pieters, Antwerpen Resultaat: Cornelissen,3 Peters,1 Pieters,0 wat klopt voor Cornelissen en Peters, maar niet voor Pieters, daar zou ook 1 moeten staan. Snap ik nog niet helemaal waarom hij dat doet... Quote
0 Felix Posted November 21, 2013 Author Posted November 21, 2013 (edited) . Edited October 4, 2015 by Guest Quote
0 pjotter Posted November 22, 2013 Posted November 22, 2013 Felix, simpel geredeneerd zou ik werken met controle/extra velden en die optellen. Dus eerst de unieke namen bepalen, unieke combinatie's bepalen van Naam en Plaats en die tellen. Is niet zo netjes maar werkt wel natuurlijk Quote
0 Ari Posted November 22, 2013 Posted November 22, 2013 Te snel gelezen, ik dacht dat je wilde weten hoe vaak een naam in een bepaalde plaats voorkomt. Dan is dit de oplossing.. plaats naam.fmp12 Quote
0 Felix Posted November 22, 2013 Author Posted November 22, 2013 (edited) . Edited October 4, 2015 by Guest Quote
0 Ari Posted November 22, 2013 Posted November 22, 2013 Ik heb wel een idee voor je maar geen tijd / zin om het uit te werken Je kunt eenvoudig per persoon een list creëren waar alle gekoppelde plaatsen in staan. Die ziet er bijvoorbeeld zo uit: a a b a c Deze list moet verdicht worden tot a b c En daar een valuecount op los laten. De uitdaging zit hem natuurlijk in het verdichten en volgens mij kan dat alleen met een recursive calc. Succes en laat me even weten of je er uit bent gekomen! Quote
0 menno Posted November 22, 2013 Posted November 22, 2013 (edited) Hi Felix, bijgaand een voorbeeld zonder extra tabellen. De werking kan bijna niet eenvoudiger: elk record heeft een veldje met de waarde 1 je maakt een self-relatie op de combi naam en plaats en daarover toon je een resumé-totaal dit is een methode die ik zelf in rapportages regelmatig toepas. mvg, Menno [edit]Dit geeft het aantal keren dat een combinatie voorkomt weer, dus is zeker niet de oplossing van deze vraag[/edit] Edited November 22, 2013 by Guest Quote
0 Ari Posted November 22, 2013 Posted November 22, 2013 Dit is hem toch niet Menno. Als je persoon a 4 x aan plaats a koppelt geeft hij aantal 4 terwijl dit dan 1 moet zijn. Quote
0 menno Posted November 22, 2013 Posted November 22, 2013 Ja je hebt gelijk ik heb niet goed gekeken, mijn variant geeft je het aantal keren dat een combinatie voorkomt, dat is een hele andere vraag. Ik ben aan het werk, vanavond heb ik wat meer tijd en kijk er dan weer even naar. Quote
0 Felix Posted November 22, 2013 Author Posted November 22, 2013 (edited) . Edited October 4, 2015 by Guest Quote
0 Ari Posted November 22, 2013 Posted November 22, 2013 Maak ook een naamveld in die tabel en dan kun je gewoon mijn voorbeeld toepassen maar dan met 1 extra tabel Quote
0 Felix Posted November 22, 2013 Author Posted November 22, 2013 (edited) . Edited October 4, 2015 by Guest Quote
0 Ari Posted November 22, 2013 Posted November 22, 2013 Blijf ik toch benieuwd of er iemand op een slimme manier een list kan verdichten aangezien dat uiteindelijk de makkelijkste oplossing zou zijn en dat best wel vaak van pas komt... Quote
0 Felix Posted November 22, 2013 Author Posted November 22, 2013 (edited) . Edited October 4, 2015 by Guest Quote
0 menno Posted November 22, 2013 Posted November 22, 2013 (edited) Deze doet het iets beter dan mijn voorstel van vanmiddag. De relatie is ook hier de self-relatie op de combinatie van naam en plaats. Vervolgens wordt er van de gerelateerde plaatsnamen met executeSql() met SELECT DISTINCT de lijst van unieke plaatsnamen bij die combinatie opgehaald, daarover een valuecount en zie daar. De formule kan dan zijn: ValueCount ( ExecuteSQL ( "SELECT DISTINCT Plaats FROM PlaatsNaam_Self WHERE Naam = ?" ; "" ; "" ; Naam ) ) of ExecuteSQL ( "SELECT Count ( DISTINCT Plaats ) FROM PlaatsNaam_Self WHERE Naam = ?" ; "" ; "" ; Naam ) net wat je leuker vind. mvg, Menno [edit 24 nov 2013]Bijlage verwijderd ivm verbeterde versie in een later antwoord:http://www.clarify.net/viewtopic.php?f=38&t=8335&start=30#p49351[/edit] Edited November 24, 2013 by Guest Quote
0 Felix Posted November 23, 2013 Author Posted November 23, 2013 (edited) . Edited October 4, 2015 by Guest Quote
0 Ari Posted November 24, 2013 Posted November 24, 2013 Dit is natuurlijk de ultieme oplossing Menno! En het beantwoordt ook mijn vraag over een verdichte list. Het slechte nieuws is dat ik mij nu echt moet gaan verdiepen in SQL terwijl FM nu juist zo lekker easy going is.. p.s. Eigenlijk is de oplossing van Andries nog simpeler en meer straigth forward. Alleen vreemd dat deze niet goed werkt. Quote
0 rgaros Posted November 24, 2013 Posted November 24, 2013 Blijf ik toch benieuwd of er iemand op een slimme manier een list kan verdichten aangezien dat uiteindelijk de makkelijkste oplossing zou zijn en dat best wel vaak van pas komt... Met snel lezen van de berichten zie ik één oplossing niet genoemd, die ruim voldoende is om de gegevens weer te geven zoals gevraagd. Ik haal uit de vraag niet dat het als getal in een veld moet komen. Dan geen ExecuteSQL en zelfs geen relaties nodig. Een lay-out met subresume gedeelte en daarop een resume-veld (telling) moet toch werken? Of snap ik het niet? ExecuteSQL is geen Haarlemmer olie. Zeker niet als je vaste veldnamen erin gaat gebruiken. René Quote
0 rmw Posted November 24, 2013 Posted November 24, 2013 Blijf ik toch benieuwd of er iemand op een slimme manier een list kan verdichten aangezien dat uiteindelijk de makkelijkste oplossing zou zijn en dat best wel vaak van pas komt... Ooit eens een custom functie gemaakt die dat doet. De functie heet UniqueLines ( theList ). Let ( [ xList = theList ; xItem = ValueCount ( xList ) ; xValue = "¶" & GetValue ( xList ; xItem ) & "¶" ] ; If ( xItem > 1 ; GetValue ( xList ; xItem ) & "¶" & UniqueLines ( SubstituteCompletely ( xList ; xValue ; "¶" ) ) ; "" ) ) Let op! De aangeboden lijst moet beginnen en eindigen met een lege waarde! Er wordt gebruik gemaakt van een tweede custom functie die iets vollediger vervangt dan de standaard van FM (volgens mij van Peter Wagemans...) Deze heet SubstituteCompletely ( theText ; theSearch ; theReplace ) Let ( [ theText = Substitute ( theText ; theSearch ; theReplace ) ; xSearch = "•∞"& theSearch ; xCSSearch = Substitute ( theText ; theSearch ; xSearch ) ; xCSReplace = Substitute ( theReplace ; theSearch ; xSearch ) ] ; If ( PatternCount ( xCSSearch ; xSearch ) and ( not PatternCount ( xCSReplace ; xCSSearch ) ) ; SubstituteCompletely ( theText; theSearch; theReplace ) ; theText ) ) rmw Quote
0 Ari Posted November 24, 2013 Posted November 24, 2013 Dank je RMW! Indrukwekkend maar misschien overbodig geworden door SQL? Rene, Jammer dat je geen werkend voorbeeld geeft maar wel een flauwe sluikreclame. Voor iedereen die wat verder wil komen met SQL binnen FM: http://www.filemakerhacks.com/wp-content/uploads/2012/10/The-Missing-FM-12-ExecuteSQL-Reference.pdf http://www.filemakerhacks.com/?tag=sql Quote
0 rgaros Posted November 24, 2013 Posted November 24, 2013 Rene, Jammer dat je geen werkend voorbeeld geeft maar wel een flauwe sluikreclame. Had je liever de term RTFM gehad? Afgelopen week heb ik in die training de techniek die ik bedoel aan een groep uitgelegd waaronder al een aantal ervaren krachten die toch even verbaasd keken en "wat eenvoudig en gaaf" riepen. Vandaar het linkje. Als de vragensteller een bestandje met voorbeelddata bijsluit nodigt dat voor mij eerder uit tot het maken van een werkend voorbeeld. Is er bovendien geen onzekerheid over welke data er precies gebruikt wordt. En is het alleen weergeven of het getal echt in een veld? Ik ga van het eerste uit en dan toch maar wat tijd in gestoken: plaats naam rr.fmp12 Zie de twee lay-outs erin, ieder met scriptactivering om automatisch correct te sorteren. Mvg, René Quote
0 Ari Posted November 24, 2013 Posted November 24, 2013 (edited) Wat betreft het voorbeeldbestand RTFP (Previous) Wat betreft de vraagstelling RTFP (Problem) Het werkt niet René, terug naar de tekentafel... Edited November 24, 2013 by Guest Quote
0 rgaros Posted November 24, 2013 Posted November 24, 2013 Het werkt niet René, terug naar de tekentafel... Want? De uitkomst komt overeen met het plaatje van de vraagsteller. René Quote
0 Ari Posted November 24, 2013 Posted November 24, 2013 Janssen Den Haag Janssen Den Haag Geeft 2, moet zijn 1 Quote
Question
Felix
.
Edited by Guest41 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.