Du bist nicht angemeldet bzw. registriert. Wenn du dich anmeldest oder registrierst kannst du alle Funktionalitäten des Forenboardes nutzen ...
Hallo, Gast! Registrieren

Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Macrofrage GSAK
#1
Hallo Wissende,
bastle noch immer an meinem Macro, das alles können soll.
Ich möchte folgendes machen:
Ich setze mittels folgender Syntax einen macrofilter:

mfilter expression=not($d_found) and not ($d_archived) and not ($d_tempdisabled) and not regex($d_ownerid,$ownerid)

Soweit sogut. Dieser Ausdruck wählt mir alle Caches die nicht archiviert, von mir nicht gefunden, nicht temporär disabled und nicht mir gehören aus. Jetzt habe ich aber in einem Formfield ein paar Checkboxen eingebaut mit denen ich auswählen kann ob ich die Founds oder die temp. disabled mitnehmen will oder nicht.
Wie baue ich den obigen Ausdruck so um, das es zusätzlich zu den Datenbankvariablen auch noch meine Checkboxen berücksichtigt?

Bitte hilfe
Bye Günther
Das Leben ist zu kurz um vernünftige Autos und Motorräder zu fahren.
Zitieren
#2
Na serwas, das kann ja was werden, bei der Masseneinschulung...Wink

Kottan vor - noch ein Tor. Der weiß das sicher.....
[Bild: img.aspx?txt=High-horse%201&uid=d8bf7641-9...f5e49&bg=2]
Nemo me impune lacessit!
Zitieren
#3
Versuchs mal so. Mit $Chk1 bis $Chk3 wird hier der Status (True/False) der drei Checkboxes ausgegeben. Den Rest darfst Du Dir selber schreiben. Wink

HTH

Anfang Macro -------------------------------------------------------------------
#*******************************************
# MacVersion = 1.0
# MacDescription = CheckboxValues
# MacAuthor = Administrator
# MacFileName = New macro.gsk
# MacUrl =
#*******************************************
$data = "Test"

If ShowForm($form)
If $ok
cancel msg="Found='$Chk1', Archived='$Chk2', Disabled='$Chk3'"
EndIf
Endif

mfilter expression=not($d_found) and not ($d_archived) and not ($d_tempdisabled) and not regex($d_ownerid,$ownerid)

<Data> Varname=$form
#********************************************************************
# Form generated by GSAK form designer on Mo 01-Okt-2007 20:15:59
#********************************************************************

Name = Form1
type = form
height = 300
width = 500

Name = Chk1
type = CheckBox
left = 94
top = 33
height = 17
width = 15

container = fmMacro_3

Name = Chk2
type = CheckBox
left = 94
top = 51
height = 17
width = 15

container = fmMacro_3

Name = Chk3
type = CheckBox
left = 93
top = 69
height = 17
width = 15

container = fmMacro_3

Name = ok
type = Button
left = 94
top = 107
height = 25
width = 75

container = fmMacro_3

Name = Found
type = Label
left = 111
top = 35
height = 13
width = 80
container = fmMacro_3

Name = Archived
type = Label
left = 111
top = 53
height = 13
width = 80
container = fmMacro_3

Name = Disabled
type = Label
left = 111
top = 71
height = 13
width = 80
container = fmMacro_3

<EndData>


So long

Georg
Zitieren
#4
Wow!

Ihr tut Euch wirklich diese Forms an?
[Bild: banner.at.gif]
Zitieren
#5
Das mit den $chk1.... habe ich eh so gelöst. (@Kottan, ja tu ich mir an.)
mein Problem ist wie ich die verknüpfe die mit den Datenbankvariablen.
In einem ersten Macrofilter entferne ich archivierte und eigene.
Nun soll das Macro in Abhängigkeit der $chk1... auch noch found oder/und Not Founds oder/und Temp.dis. entfernen.
Das Leben ist zu kurz um vernünftige Autos und Motorräder zu fahren.
Zitieren
#6
Kottan schrieb:Wow!

Ihr tut Euch wirklich diese Forms an?

Stört ja nicht wirklich. Ist halt ein bisserl mehr Code. Seit Visual Basic gehts ja gar nicht mehr ohne Klicki-Klicki Wink


So long

Georg
Zitieren
#7
mit forms hatte bislang auch nix am hut. da könnte ich eine schulung brauchen. Wink
[Bild: 12567.gif]**[Bild: stat.aspx?id=10009077]
Zitieren
#8
Die Forms sind ned wirklich kompliziert.
Nur wie kann ich ein mit MFILTER gefilterten Ansammlung von Caches noch weiterfiltern ohne den alten Filtervorgang zu löschen. Glaube so habe ich mein Problem besser spezifiziert.
Das Leben ist zu kurz um vernünftige Autos und Motorräder zu fahren.
Zitieren
#9
Jeeper.at schrieb:mein Problem ist wie ich die verknüpfe die mit den Datenbankvariablen.
Die Rückgabewerte von dem Fenster als Input für eine If Abfrage verwenden. Und den Filter als Sting zusammenbasteln. Der halt die entsprechenden Teile aus dem If Zweig erhält oder auch nicht.
[Bild: banner.at.gif]
Zitieren
#10
Jeeper.at schrieb:Die Forms sind ned wirklich kompliziert.
Nur wie kann ich ein mit MFILTER gefilterten Ansammlung von Caches noch weiterfiltern ohne den alten Filtervorgang zu löschen. Glaube so habe ich mein Problem besser spezifiziert.

Ich hoffe jetzt verstehe ich Dich richtig.

Das Form habe ich weggelassen.

Ist zwar nicht elegant, aber es funktioniert. Smile

Wenn es mehr als drei Checkboxen sind sollte man sich etwas anderes einfallen lassen. Das mit dem Join bei mfilter habe ich mir noch nicht angeschaut. Im Prinzip könnte man das bei gsak 7.x auch über SQL-Statements machen. Muß ich mir mal anschauen.

$data = "Test"

If ShowForm($form)
If $ok
#cancel msg="Found='$Chk1', Archived='$Chk2', Disabled='$Chk3'"
$found=$Chk1
$archived=$Chk2
$disabled=$Chk3
GoSub Name=FilterValues
EndIf
Endif
cancel msg="Done!"$found,$archived,$disabled



BeginSub name=FilterValues
if $found=true and $archived=true and $disabled=true
mfilter expression=($d_found) and ($d_Archived) and ($d_Tempdisabled)
endif
if $found=false and $archived=true and $disabled=true
mfilter expression=not($d_found) and ($d_Archived) or ($d_Tempdisabled)
endif
if $found=false and $archived=false and $disabled=true
mfilter expression=not($d_found) and not($d_Archived) and ($d_Tempdisabled)
endif
if $found=false and $archived=true and $disabled=false
mfilter expression=not($d_found) and ($d_Archived) and not($d_Tempdisabled)
endif
if $found=true and $archived=false and $disabled=false
mfilter expression=($d_found) and not($d_Archived) and not($d_Tempdisabled)
endif
if $found=false and $archived=false and $disabled=false
mfilter expression=not($d_found) and not($d_Archived) and not($d_Tempdisabled)
endif
if $found=true and $archived=false and $disabled=true
mfilter expression=($d_found) and not($d_Archived) and ($d_Tempdisabled)
endif
if $found=true and $archived=true and $disabled=false
mfilter expression=($d_found) and ($d_Archived) and not($d_Tempdisabled)
endif
if $found=true and $archived=false and $disabled=false
mfilter expression=($d_found) and not($d_Archived) and not($d_Tempdisabled)
endif
EndSub


So long

Georg
Zitieren
#11
jössa... gibts auch eine einschulung ... GSAK für dummies????
[Bild: sigzee.php?munzeer=Mausbiber&lang=de]
Zitieren
#12
@Schurli,
ja so sollte es funktionieren. Danke. Werde das heute nachmittag in der Firma (und das mir das keiner dem Chef sagt) mal testen.

@Mausbiber
Na geh, ist doch eh einfach...
Das Leben ist zu kurz um vernünftige Autos und Motorräder zu fahren.
Zitieren
#13
So, konnte doch nicht bis in die Firma warten.

Habe nun folgendes gschrieben.

if $chkfound=true and $chknotfound=true and $chktempdis=true
mfilter Expression=not ($d_archived) and not regex($d_ownerid,$ownerid) and ($d_found) and not ($d_found) and ($d_tempdisabled)
endif

Die drei Checkboxen wertet er richtig aus. Ich möchte mit dem Filter also alle Caches anzeigen die nicht archiviert sind, die nicht mir gehören, die ich schon gefunden habe, die ich nicht gefunden habe und alle die momentan disabled sind. Macht er aber nicht.
Was ist an dem mfilter Ausdruck falsch?
Das Leben ist zu kurz um vernünftige Autos und Motorräder zu fahren.
Zitieren
#14
Jeeper.at schrieb:if $chkfound=true and $chknotfound=true and $chktempdis=true
mfilter Expression=not ($d_archived) and not regex($d_ownerid,$ownerid) and ($d_found) and not ($d_found) and ($d_tempdisabled)
endif

Was ist an dem mfilter Ausdruck falsch?

Das kann mit AND nicht funktionieren. Das würde meinen: Such mir alle Caches die ich gefunden UND die ich nicht gefunden habe. Der Cache kann nicht gleichzeitig gefunden und ungefunden sein. Mit OR sollte es funken.

Das and ($d_tempdisabled) passt auch nicht, da gehört auch ein OR. Sonst müsste der Cache auch gleichzeitig Disabled und archived sein.

Die Regex hat als erstes den zu suchenden Wert und als zweites die Datenbankvariable also z.B. not(regex("Jeeper.at",$d_ownername))

Edit: Eigentlich kannst Du das ($d_found) or not($d_found) komplett weglassen. Einen der zwei Zustände muß ein Cache sowieso haben.

Also z.B.

$ownername="schurli"
mfilter Expression=not(regex($ownername,$d_ownername)) and not($d_archived) or ($d_tempdisabled)


So long

Georg
Zitieren
#15
Aha [Bild: a136.gif]
[Bild: img.aspx?txt=High-horse%201&uid=d8bf7641-9...f5e49&bg=2]
Nemo me impune lacessit!
Zitieren
#16
@Schurli
Eigentlich ganz klar so wie du es erklärt hast. Ist so ein Fall von ich seh den Wald vor lauter Bäumen nicht.
Sei aber nachsichtig, ich beschäftige mich mit den Macros in GSAK erst seit kurzer Zeit.

@tafari
ist das nicht spammen was du da machst?Tongue
Das Leben ist zu kurz um vernünftige Autos und Motorräder zu fahren.
Zitieren
#17
Jeeper.at schrieb:Sei aber nachsichtig, ich beschäftige mich mit den Macros in GSAK erst seit kurzer Zeit.
Wird sicher noch, trial-and-error ist noch immer das Beste und ein Forum ist ja ua. auch zum Informationsaustausch da. Smile
Auch ich hab das nicht in der Muttermilch mitbekommen. Erst mit der Schulmilch. Wink
Es immer gut wenn man sich solche Statements in die jeweilige Muttersprache übersetzt. Dann kommt man leichter auf logische Fehler.

Jeeper.at schrieb:@tafari
ist das nicht spammen was du da machst?Tongue

Na endlich spamt mal wer anderer. Wink


So long

Georg
Zitieren
#18
Nein ist es nicht. Ich gebe der Comunnity lediglich bekannt, dass ich nicht durchblicke, worüber ihr da redet. ALso das Problem verstehe ich schon, aber die Lösungsansätze sind mir ein Greuel....Wink
[Bild: img.aspx?txt=High-horse%201&uid=d8bf7641-9...f5e49&bg=2]
Nemo me impune lacessit!
Zitieren
#19
Inzwischen läuft das Macro soweit.
Jetzt kommt der nächste Teil.
Da ich da in der Firma aber eine unregistrierte Version von GSAK habe sind die NAG Screens sehr lästig.
Bei jeder wichtigen Aktion sind es inzwischen 81Sekunden. Smile
Das Leben ist zu kurz um vernünftige Autos und Motorräder zu fahren.
Zitieren
#20
Zeit um eine Kaffee trinken zu können....Wink
[Bild: img.aspx?txt=High-horse%201&uid=d8bf7641-9...f5e49&bg=2]
Nemo me impune lacessit!
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste


Kontakt | Österr. Geocaching Forum | Nach oben | | Archiv-Modus | RSS-Synchronisation | Impressum
Erdstrahlen Freie Webseite!

Internationales Geocaching Portal

Webspace und Traffic kosten Geld. Da dieses Forum von privater Seite finanziert wird, und die Kosten aufgrund des Wachstums auch steigen, hast du hier die Möglichkeit deiner Zufriedenheit mit dem Forenboard und dessen Services Ausdruck zu verleihen. Jeder noch so kleine Beitrag sichert den Fortbestand dieses Forenboards. Vorab sei allen gedankt die dieses Forum, sei es finanziell oder auch durch geopferte Zeit, unterstützen: