• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Nach filtern suchen und in DB speichern

TimberWuff

Geocacher
Nabend,

in welche Sprache wurde GSAK geschrieben, weis das jemand? Das interessiert mich rein Interesse halber.

Die wichtigere Frage ist ob es ein Makro gibt welches: nach einem bestimmten Filter filtert und dann in die Datenbank verschiebt die wie der Filter heist?

Beispiel: Der Filter soll alle Caches aus Thüringen filtern und auomatisch in die DB Thüringen schieben.
 
A

Anonymous

Guest
Code:
MFilter Where=g_contains('Thüringen', State)
Das ist Makrocode, welcher auf alle Caches aus Thüringen filtert.
 
A

Anonymous

Guest
Eine Liste der zur Verfügung stehenden Filter gibt es mit:
Code:
$filters = SysInfo("Filters")
MsgOK Msg=$filters
 
OP
T

TimberWuff

Geocacher
Danke für Eure Antworten, die Filter kenne ich. Ich wollte aber gleich mehrere Filter nacheinander aufrufen. Und wenn der Filter angewendet war, sollten die Caches gleich in die entsprechende DB verschoben werden.
 
A

Anonymous

Guest
TimberWuff schrieb:
Danke für Eure Antworten, die Filter kenne ich. Ich wollte aber gleich mehrere Filter nacheinander aufrufen. Und wenn der Filter angewendet war, sollten die Caches gleich in die entsprechende DB verschoben werden.

Warum schreibst Du das nicht gleich in den ersten Post? :roll:
Wie soll denn das Makro die Filter aussuchen?
 
A

Anonymous

Guest
TimberWuff schrieb:
Danke für Eure Antworten, die Filter kenne ich. Ich wollte aber gleich mehrere Filter nacheinander aufrufen. Und wenn der Filter angewendet war, sollten die Caches gleich in die entsprechende DB verschoben werden.

Dann mach das doch einfach.
Mustercode:
Code:
FILTER Name="ABC"
MOVECOPY Settings="X">
FILTER Name="DEF"
MOVECOPY Settings="Y">
FILTER Name="GHI"
MOVECOPY Settings="Z">
Statt gesicherter Filter gehen natürlich auch "MFilter".
 
A

Anonymous

Guest
TimberWuff schrieb:
[...]
Beispiel: Der Filter soll alle Caches aus Thüringen filtern und automatisch in die DB Thüringen schieben.

Sollen die anderen Filter ähnlich aussehen? Also: sächsische Caches in die DB "Sachsen" verschieben?
 
OP
T

TimberWuff

Geocacher
Danke für deine Hilfe.
Ja, es sollen alle Bundesländer sozusagen ausgewählt werden und die DB geschoben werden. Die DBs heisen alle wieder die Bundesländer
 
A

Anonymous

Guest
Das hab ich Sonnabend mal auf Verdacht angefertigt (Ich lag mit einer Erkältung flach):
Das Makro bewegt die Caches in die Ziel-Datenbanken, sie werden also aus der Quell-Datenbank entfernt.
Code:
#******************************************************
# MacVersion = 0.5
# MacDescription = Move State Caches to State Databases
# MacAuthor = SamHenkel
# MacFileName = States2StatesDb.gsk
# MacUrl =
#******************************************************

	SPEEDMODE Status=On

	$CurrentDB = $_CurrentDatabase
	$dbnames = SysInfo("Databases")

	$_sql = "Select Distinct State from cachesall where $_Where"
	$states = Sqlite("sql",$_sql)
	$states = Replace($_CrLf,";",$states)
	$count = (RegExCount(";",$states))+1

#****** Select States per Database ********************
	
	$x=0

	REPEAT
   	$x = $x + 1
	$statename = Extract($states,";", $x)
	$dbtrue = AT($statename,$dbnames)

	IF not($dbtrue=0)
	   MFilter Where=g_contains($statename,State)	   
	   $Move = Replace("~~DATABASE~~","$statename",$Move)
  	     MACROSET Dialog=MoveCopy VarName=$Move
	     MoveCopy Settings=<macro>   
	     $Move = Replace("$statename","~~DATABASE~~",$Move)
	ENDIF

	DATABASE Name=$CurrentDB

	UNTIL $x=$count

#**************************************************************

<data> VarName=$Move
[TfmMove]
cbxDestination.Text=~~DATABASE~~
rbtAdd.Checked=True
rbtAddFlag.Checked=False
rbtAddIgnore.Checked=False
rbtCopy.Checked=False
rbtExistIgnore.Checked=False
rbtFlagOnly.Checked=False
rbtMove.Checked=True
rbtReplace.Checked=False
rbtReplaceFlag.Checked=True
chkDisplay.Checked=False
chkAddIgnore.Checked=False
chkMergeLogs.Checked=False
chkMergeWaypoints.Checked=False
rbtCustomHalt.Checked=False
rbtCustomIgnore.Checked=False
rbtCustomSync.Checked=True
<enddata>

NB: Ich habe das nur mit einer kleinen Test-Db gecheckt. Bitte mache unbedingt vor Gebrauch ein GSAK-Backup
 
OP
T

TimberWuff

Geocacher
Danke für deine Arbeit. Habe es mal durchlaufen lassen. Bei den Bundesländern: Niedersachsen, Sachen und Sachsen-Anhalt bringt es noch was durcheinander. Verschiebt nach Sachsen und Niedersachsen auch welche die in Thüringen, Bayern usw gehören.
 
A

Anonymous

Guest
TimberWuff schrieb:
Danke für deine Arbeit. Habe es mal durchlaufen lassen. Bei den Bundesländern: Niedersachsen, Sachen und Sachsen-Anhalt bringt es noch was durcheinander. Verschiebt nach Sachsen und Niedersachsen auch welche die in Thüringen, Bayern usw gehören.

Ja, ist klar. Der MFilter sucht nach "Sachsen" und wählt alle Bundesländer aus, in denen "Sachsen" vorkommt. Kann man ändern. ;-) Ich habe das nur mit drei Bundesländern getestet, da ich DB-Separationen nach Bundesländern eigentlich für großen Unsinn halte. Wenn ich eine DB-Untermenge bearbeiten will, dann filter ich das und mach dann was zu tun ist. Mit mehreren DBs ist man nur am hin- und herkopieren (ohne Sinn und Verstand). Dabei gehen dann durch Überschreiben gern mal Daten verloren (CCs zum Beispiel). Und wenn man seinen GPSr länderübergreifend beladen will (vom Loggen danach ganz zu schweigen) dann ist man wieder am Kopieren. Das ist alles überflüssig.
 
A

Anonymous

Guest
Andere den MFilter in
Code:
MFilter Where=g_equal($statename,State)
 
Oben