Denna delen av 99 uppdateras inte längre utan har arkiverats inför framtiden som ett museum.
Här kan du läsa mer om varför.
Mac-nyheter hittar du på Macradion.com och forumet hittar du via Applebubblan.

Hämta medlemsstatus från en annan tabell

Tråden skapades och har fått 6 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Uppsala
  • 2009-09-24 19:16

Jag sitter med ett medlemsregister till en ideell förening. Vi har olika former av medlemskap, man kan säga att det är ett basmedlemskap och guldmedlemskap. Alla som har betalat ett guldmedlemskap under året är med i "guldklubben". Vissa generösa medlemmar betalar ibland flera medlemsavgifter under året.

Det jag vill, men inte riktigt har fått klart för mig ännu, är hur man kan "flagga" någon som guldmedlem.

Jag har två tabeller: personer och betalningar.

Persontabellen har inga konstigheter, medlemsnummer (nyckel) och personuppgifter. Betalningstabellen innehåller förutom medlemsnummer och datum även en radavgränsad kolumn (från kryssrutor i inmatningsformuläret) som kan innehålla:

"Bas¶Guld", "Guld¶Bas", "Bas" eller "Guld"

Det jag skulle vilja ha är ett beräknat fält i persontabellen som signalerar om någon gjort en guldbetalning under kalenderåret. Hur bör jag gå tillväga?

Slå upp funktionen Patterncount i hjälpen.

Eller Count, funkar också.

  • Medlem
  • Uppsala
  • 2009-09-24 22:00

Jag behöver nog mer ledning ändå, Taz. Med ett PatternCount-fält i persontabellen har jag lyckats göra en flagga för alla guldmedlemmar. Däremot tar den inte hänsyn till om guldmedlemmen har betalat för detta år eftersom endast den första betalningen ger utslag.

För att tydliggöra:
Den som har betalat guldmedlemskap år 1, men inte gjort det år 2, får en flagga.
Den som inte har betalat guldmedlemskap år 1, men som gjort det år 2 får ingen flagga.

Är det någon if-sats som ska till?

  • Medlem
  • Uppsala
  • 2009-09-24 22:22

Något mer koncist uttryckt. På något vis vill jag alltså omforma sökningen Personer_Betalningar::"Kryss i guldmedlemsrutan" OCH Personer_Betalningar::Datum >= 2009-01-01 till någon form av uttryck. Sedan kan jag lägga en Count på den (överkurs). Det viktiga är att resultatet ger mig något annat än 0 när jag har en färsk guldmedlem.

Har du sett att i en relation kan du har FLERA grejer? Tex datum är större än så OCH mindre än så, OCH fältet där borta innehåller ordet Guld (mot ett statiskt fält här). Om du sedan gör en beräkning på denna sida Count (relationens namn::något fält som aldrig är tomt i den andra tabellen), så kan du använda det i en beräkning:

If (Count (relationens namn::något fält som aldrig är tomt i den andra tabellen)>0; "Guldmedlem senaste året"; "")

  • Medlem
  • Uppsala
  • 2009-09-24 23:45

Tack, Taz! Jag är framme.

Nu har jag gjort ett globalt fält i tabellen Personer med fjolårets första dag. Låt oss kalla detta gFörra årets första dag.

Sedan skapade jag ett beräknat fält kallat Guld i betalningstabellen. If (PatternCount (Betalningstyp;"Guld") = 1 ; Medlemsnummer ; 0 )

Detta innebär att när ordet "Guld" finns i fältet Betalningstyp så får fältet Guld samma värde som medlemsnumret som betalningen avser.

Relationen (som pekar mot en ny tabellförekomst) blir då:
Medlemsnummer = Personer_Betalning 1::Medlemsnummer
gFörra årets första dag <= Personer_Betalning 1::Datum
Medlemsnummer = Personer_Betalning 1::Guld

Räknar man antal poster som denna relation har så får man antalet Guldbetalningar för detta och närmast föregående år som den aktuella medlemmen har erlagt.

Senast redigerat 2009-09-25 00:04
1
Bevaka tråden