baby hübner
Geomaster
Moin,
ich bin erst seit zwei Wochen registrierte Nutzer von GSAK, dies aber mit zunehmender Begeisterung. Da den Makros aus dem Netz immer irgendeine Funktionalität gefehlt hat, hab ich angefangen, mir meine eigenen bescheidenen Makros zusammenzustümpern. Eine von den Funktionalitäten, die mir bis jetzt gefehlt habe, war die Möglichkeit, eine Datenbank einfach und flexibel nach Bewertungen und Anzahl der Bewertungen zu filtern. Die entsprechenden Daten hatte ich mir zuvor mittels GCVoteGrabber von GCVote gezogen und in die UserData-Spalten geschrieben.
Da ich bis jetzt ansonsten nur Workarounds gefunden habe, stelle ich hier mal mein Makro allen Interessierten zur Verfügung und zur Diskussion. Bitte bedenkt: Ich bin noch Anfänger.
GUI:
Anmerkungen für Nutzer:
-die Werte müssen mittels GCVoteGrabber in die Userdata-Spalten geschrieben werden und zwar...
-... die Durchschnittsbewertung (oder der Median) in Userdata1
-... die Anzahl der Wertungen in Userdata2
-MinCount: Mindestanzahl der Bewertungen
-MinVote: Mindestwertung, Dezimaltrennzeichen: Punkt! (z.B. 3.7)
-Filter wird auch auf zuvor durch Standardfilter erzielte Ergebnisse angewandt (gilt nicht für Ergebnisse durch Makrofilter)
-hinterher nochmal nachfiltern geht nicht. Natürlich kann man für die Anzeige UserFlags setzen und diese dann für weiteres Filtern benutzen
Anmerkungen für Makroprogrammierer:
Die Schwierigkeit war, dass die UserData-Spalten strings sind. Ein sinnvolles Filtern nach Wert erfordert aber Zahlen. Mein Vorgehen war also
1. Sortieren nach Count
2. Jeden Count-Wert einzeln aufsteigend mit Val() in eine Zahl umwandeln
3. Sobald MinCount erfüllt ist für den Rest Macroflag setzen
4. Alle macrogeflaggten Caches anzeigen
5. Sortieren nach Vote
6. Jeden Vote-Wert einzeln aufsteigend mit Val() in eine Zahl umwandeln
7. Alle Macroflaggs löschen, die nicht mindestens MinVote sind
8. Alle macrogeflaggten Caches anzeigen
Nicht sehr elegant, oder? Ich habs schon mit "MFILTER where=... " versucht. Da könnte man dann die Bedingungen via AND verknüpfen. Letztlich bin ich aber an der Umwandlung String->Zahl gescheitert.
Irgendwelche Vorschläge?
Desweiteren würde ich gerne die "Select a saved Filter"-ComboBox reinbringen. Der User könnte dann einfach den GCVote-Filter mit abgespeicherten Filtern kombinieren. Gibt es eine Möglichkeit an die Einträge (z.B. als Array) zu gelangen und damit eine eigen ComboBox initialisieren?
bh
p.s. geht es wirklich nicht, dass ich dass Makro hier direkt uploade? wollte es hier erst verbessern, bevor ich es ins GSAK-Forum stelle.
edit: Ok. Geht doch. Aber nur gezipt.
ich bin erst seit zwei Wochen registrierte Nutzer von GSAK, dies aber mit zunehmender Begeisterung. Da den Makros aus dem Netz immer irgendeine Funktionalität gefehlt hat, hab ich angefangen, mir meine eigenen bescheidenen Makros zusammenzustümpern. Eine von den Funktionalitäten, die mir bis jetzt gefehlt habe, war die Möglichkeit, eine Datenbank einfach und flexibel nach Bewertungen und Anzahl der Bewertungen zu filtern. Die entsprechenden Daten hatte ich mir zuvor mittels GCVoteGrabber von GCVote gezogen und in die UserData-Spalten geschrieben.
Da ich bis jetzt ansonsten nur Workarounds gefunden habe, stelle ich hier mal mein Makro allen Interessierten zur Verfügung und zur Diskussion. Bitte bedenkt: Ich bin noch Anfänger.
GUI:
Anmerkungen für Nutzer:
-die Werte müssen mittels GCVoteGrabber in die Userdata-Spalten geschrieben werden und zwar...
-... die Durchschnittsbewertung (oder der Median) in Userdata1
-... die Anzahl der Wertungen in Userdata2
-MinCount: Mindestanzahl der Bewertungen
-MinVote: Mindestwertung, Dezimaltrennzeichen: Punkt! (z.B. 3.7)
-Filter wird auch auf zuvor durch Standardfilter erzielte Ergebnisse angewandt (gilt nicht für Ergebnisse durch Makrofilter)
-hinterher nochmal nachfiltern geht nicht. Natürlich kann man für die Anzeige UserFlags setzen und diese dann für weiteres Filtern benutzen
Anmerkungen für Makroprogrammierer:
Die Schwierigkeit war, dass die UserData-Spalten strings sind. Ein sinnvolles Filtern nach Wert erfordert aber Zahlen. Mein Vorgehen war also
1. Sortieren nach Count
2. Jeden Count-Wert einzeln aufsteigend mit Val() in eine Zahl umwandeln
3. Sobald MinCount erfüllt ist für den Rest Macroflag setzen
4. Alle macrogeflaggten Caches anzeigen
5. Sortieren nach Vote
6. Jeden Vote-Wert einzeln aufsteigend mit Val() in eine Zahl umwandeln
7. Alle Macroflaggs löschen, die nicht mindestens MinVote sind
8. Alle macrogeflaggten Caches anzeigen
Nicht sehr elegant, oder? Ich habs schon mit "MFILTER where=... " versucht. Da könnte man dann die Bedingungen via AND verknüpfen. Letztlich bin ich aber an der Umwandlung String->Zahl gescheitert.
Irgendwelche Vorschläge?
Desweiteren würde ich gerne die "Select a saved Filter"-ComboBox reinbringen. Der User könnte dann einfach den GCVote-Filter mit abgespeicherten Filtern kombinieren. Gibt es eine Möglichkeit an die Einträge (z.B. als Array) zu gelangen und damit eine eigen ComboBox initialisieren?
bh
p.s. geht es wirklich nicht, dass ich dass Makro hier direkt uploade? wollte es hier erst verbessern, bevor ich es ins GSAK-Forum stelle.
edit: Ok. Geht doch. Aber nur gezipt.