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

wer kennt sich mit Macros aus?

Roli_29

Geocacher
Hallo Zusammen!

Ich hätte da mal eine Frage.

Ich nutze GSAK mit den PQ´s von geocaching.com (wie wohl jeder hier). Nun bietet ja Opencaching auch einen GPX Download von bis zu 500 Caches auf einmal an. Die kann man dann natürlich auch mit GSAK nutzen.
Für die Caches von OC habe ich eine eigene Database angelegt. Nun finde ich es überflüssig, gleiche Caches in zwei Databases zu führen.

Kann man ein Macro schreiben, welches die Namen der Caches in zwei Databases vergleicht und dann, wenn ein Cache doppelt ist, in einer Database automatisch löscht? Das Ergebniss sollte dann so sein, das ich in der OC Database nur noch Caches habe, die bei GC nicht gelistet sind.

Wer kann helfen?

Gruß Roland
 

delta4

Geocacher
Dieses Macros sucht für alle Waypoints in der Datenbank "OCde" einen Waypoint in der Datenbank "GCcom", der den gleichen Namen hat und setzt in "OCde" den UserFlag.

:!: Vorher werden alle UserFlags gelöscht :!:

Da das Macro ständig zwischen den beiden Datenbanken hin und her schaltet ist es nicht besonders schnell. :roll:

Nur so eine Idee, bitte erst testen :!:

Code:
Set $OCDB = "OCde"                       # OCde und GCcom durch die
Set $GCDB = "GCcom"                      # Namen der entsprechenden
                                         # Datenbanken ersetzen

DATABASE Name="$OCDB" 
USERFLAG Type=clear Range=all
Goto Position=Top
Set $Zähler=0
Set $Vergleich=""
While .not. $_EOL
   $Vergleich = $d_Name
   DATABASE Name="$GCDB"
   Goto Position=Top
   While .not. $_EOL
      IF $d_Name = $Vergleich
         DATABASE Name="$OCDB"
         Goto Position=Top
         IF $Zähler>0
            Goto Position=$Zähler
         ENDIF
         USERFLAG Type=Set Range=1
         DATABASE Name="$GCDB"
         Goto Position=Bottom
      ENDIF
      Goto Position=Next
   EndWhile
   DATABASE Name="$OCDB"
   $Zähler = $Zähler + 1
   Goto Position=$Zähler
EndWhile
 
Stimt es das man mit diese macro ein flag setzt in OCdb bei die caches die in beide anwezend sind. Wenn nicht kanst du mir erklären was das ziel ist von diese macro.
 

Banana Joe

Geocacher
@ Jurgen & co:
Das stimmt. Das Makro setzt einen User Flag für alle Einträge, die AUCH in einer zweiten Datenbank stehen. Was man dann mit diesen Einträgen macht, dass ist Jedem selbst überlassen: löschen, Status verändern, exportieren, etc...
 
Den habe ich eine viel snelere lösung. Bei mir wahr er mit ein mit 7000 und eind db mit 1600 caches sehr lange in die gange. Mit den move/copy befehl is es möglich von db A alle caches zu copieren nach db B. Mann kan es aber so einstellen das die caches nicht copiert werden aber nur der flag gesetzt wird wenn die sowohl in A und B sind. Dies ging in einige secunden.

MOVECOPY <Settings="name">

Move or Copy waypoints from one database to another

Settings = Name of the corresponding settings you would like to use for this move/copy. You must have previously created these settings from the move/copy dialog (Database=>Move/Copy Waypoints...)
 
Ich habe dies in ein macro umgezets. Nun habe aber probleme mit mein mail reinholen weil ergentwie die einstellungen sich geanderd haben von GETMAIL. Habe schön das probleem in das GS-Forum geposted.
 

Banana Joe

Geocacher
delta4 schrieb:
Dieses Macros sucht für alle Waypoints in der Datenbank "OCde" einen Waypoint in der Datenbank "GCcom", der den gleichen Namen hat und setzt in "OCde" den UserFlag.
Habe das Macro für meine Zwecke umgestrickt und ausprobiert. Es funktioniert, ist aber tatsächlich recht langsam.
Wenn man in seinen Datenbanken lediglich die Caches von GC.com hat, sollte man den eindeutigen GC-Code ($d_Code) statt des mehrdeutigen Waypoint-Namens ($d_Name) verwenden.
 

Banana Joe

Geocacher
Jurgen & co schrieb:
Ich habe dies in ein macro umgezets. ...
@ Jurgen & co
Kannst Du bitte das von Dir erstellte Macro hier einstellen? Ich möchte zwei Datenbanken abgleichen - aber NICHT über den GC-Code sondern über den 10/12/16-stelligen Smart Name. Die zweite Datenbank hat nämlich die Navicache Codes. Vielen Dank.
 
Sei bitte vorsicht mit welche settings du benutzt. Es ist ja moglich das du dein datei versaut. Vielleicht is es gut es erstmal mit testdateien oder kopies zu probieren.

Ich glaube es war diese. Ich habe es lang nicht mehr benutzt weil ich nur zwei dateien benutze im moment und wenn ich abgleichen mochte tu ich dass meisten per hand.

Code:
# man solte erst in Database eine MOVECOPY machen und speichern.

#MOVECOPY <Settings="name">

#Move or Copy waypoints from one database to another

#Settings = Name of the corresponding settings you would like to use for this move/copy. You must have previously created these settings from the move/copy  dialog (Database=>Move/Copy Waypoints...)

Set $OCDB = "OCde"                       # OCde und GCcom durch die
Set $GCDB = "GCcom"                      # Namen der entsprechenden
                                         # Datenbanken ersetzen

DATABASE Name="$GCDB"
USERFLAG Type=clear Range=all
MOVECOPY Settings=OCde
 
Oben