Přejít na obsah


Fotka

Makro pro GSAK


  • Pokud chcete vložit odpověď, přihlašte se
53 odpovědí na toto téma

#1 Mejstro

Mejstro

    Advanced Member

  • Members
  • PipPipPip
  • 529 příspěvků(y)

Publikováno 29 únor 2008 - 9:27

Ahoj. Potreboval bych vyresit nasledujici problem, se kterym si nevim rady. Mam v GSAKu databazi ceskych kesi rozdelenou dle kraju (k tomu pouzivam sloupec User Data2). Pri dohrani novych kesi z PQ potrebuji tento udaj priradit i novym zaznamum. K tomu vyuzivam preddefinovane filtry dle kraju a rucni zapis do prislusneho sloupce. Napadlo me, ze bych vytvoril makro, ktere by: 1) nastavilo filtr kesi dle kraju 2) provedlo by "global replace" na vyber dle prednastavenych parametru. napr: # 01 - Kraj Jihocesky FILTER Name="Kraj: Jihocesky" REPLACE Settings="Kraj: Jihocesky" Makro funguje jak ma, ale problem spociva v tom, ze je vzdy nahrazovan retezec v celem vyberu - tzn. i pro kese, ktere jiz maji kraj prirazeny - coz pro vsechny kraje trva pomerne dlouho. Neporadil by mi nekdo ze zkusenejsich programatoru a uzivatelu GSAku jak elegantne priradit pozadovanou informaci jen pro prazdna pole u novych kesi? Dekuji za odpoved a pomoc
  • 0
Honza a Péťa Mejstříkovi
Beroun
Garmin Oregon 550t + Topo Czech 2010 PRO + GSAK 7.7.x

#2 Mion

Mion

    Mion

  • Members
  • PipPipPip
  • 945 příspěvků(y)

Publikováno 29 únor 2008 - 9:33

nepomohlo by jen kouknout, zda položka UserData2 je prazdná?
neco takoveho jako:

...
IF (len($d_User2)=0)     
  $d_USer2=$novyudaj
ENDIF
...

případně by asi fungovalo i jednodušší
...
IF ( $d_User2="" )     
  $d_USer2=$novyudaj
ENDIF
...

(nezkoušel jsem, snad je to syntakticky správně)

Případně rychlejší určitě bude pomocí MFILTER funkce rovnou před vlastním doplňováním odfiltrovat ty cache, kde je $d_USer2 již vyplněné:

MFILTER Expression=( $d_User2="" )

  • 0

#3 Mejstro

Mejstro

    Advanced Member

  • Members
  • PipPipPip
  • 529 příspěvků(y)

Publikováno 29 únor 2008 - 10:05

Ahoj, moc dekuji, vyzkousim a dam vedet, zda to funguje :-)
  • 0
Honza a Péťa Mejstříkovi
Beroun
Garmin Oregon 550t + Topo Czech 2010 PRO + GSAK 7.7.x

#4 Mejstro

Mejstro

    Advanced Member

  • Members
  • PipPipPip
  • 529 příspěvků(y)

Publikováno 29 únor 2008 - 10:39

Tak jsem to napsal takhle:
# 01 - Kraj Jihocesky
FILTER Name="Kraj: Jihocesky"
MFILTER Expression=( $d_User2="" )
IF ( $d_User2="" ) 
$d_User2=$Kraj: Jihocesky
ENDIF
..ale hlasi mi to chybu, ktere moc nerozumim:
Error in Macro at line: 13
$d_User2=$Kraj: Jihocesky

Error=> (Pos: 15) Integer, Extended or DateTime type value expected

  • 0
Honza a Péťa Mejstříkovi
Beroun
Garmin Oregon 550t + Topo Czech 2010 PRO + GSAK 7.7.x

#5 Mion

Mion

    Mion

  • Members
  • PipPipPip
  • 945 příspěvků(y)

Publikováno 29 únor 2008 - 10:56

správně má být text v uvozovkách, to co tam máš, je nějaký překlep
viz: $d_User2="Kraj: Jihocesky"

Jinak jsem nepochopil, co tím filtrem chceš docílit. Tím provedeš výběr keší, které už mají ten kraj nastavený:
MFILTER Expression=( $d_User2="Kraj: Jihocesky" )

V mém příkladu bylo uvedeno nastavení filtru pro vybrání těch keší, které ještě nemají nastavený usernote2
  • 0

#6 Mejstro

Mejstro

    Advanced Member

  • Members
  • PipPipPip
  • 529 příspěvků(y)

Publikováno 29 únor 2008 - 11:06

Ten kiks s vyberem jsem uz pochopil a opravil :-).
Uvozovky jsem dodal, ale stejne to nedela, to co bych chtel:
Priradi mi to udaj o kraji pouze u jedne kese, a to jeste ne ve vybranem filtru. Ja bych ale potreboval vyplnit onen udaj pro vsechny kese s nevyplnenym krajem, odpovidajici dannemu filtru - v tomto pripade filtr "Kraj: Jihocesky"

Takhle to zatim vypada:
# 01 - Kraj Jihocesky
FILTER Name="Kraj: Jihocesky"
MFILTER Expression=( $d_User2="" )
IF ( $d_User2="" ) 
$d_User2="Kraj: Jihocesky"
ENDIF

Bez radku MFILTER to filtruje spravne, ale doplni data opet jen pro jednu kesku
  • 0
Honza a Péťa Mejstříkovi
Beroun
Garmin Oregon 550t + Topo Czech 2010 PRO + GSAK 7.7.x

#7 suplere

suplere

    Advanced Member

  • Members
  • PipPipPip
  • 408 příspěvků(y)

Publikováno 29 únor 2008 - 11:24

Tak to uprav takto : # 01 - Kraj Jihocesky FILTER Name="Kraj: Jihocesky" MFILTER Expression=( $d_User2="" ) Join=AND Goto Position=Top While not($_eol) $d_User2="Kraj: Jihocesky" Goto position=next ENDWHILE Funguje to s timto MFILTER Expression=( $d_User2="" )? Pokud ne, tak misto MFILTER Expression=( $d_User2="" ), musis pouzit ten IF uvnitr cyklu while....
  • 0

#8 Mion

Mion

    Mion

  • Members
  • PipPipPip
  • 945 příspěvků(y)

Publikováno 29 únor 2008 - 11:24

no mně to nějak přijde, že chceš něco vyplnit zrovna podle toho, co tam chceš doplnit a co tam ještě není :) Nějak si nedovedu představit, jakým stylem máš vybrané keše, do kterých chceš vepsat do UserNote2 ten údaj o konkrétním kraji. Nejdřív musíš mít v GSAK filtrem vyselektované keše, které náleží do dané oblasti (to nechápu přesně jak uděláš - ručně?) Pak tento seznam můžeš projet makrem a všechny prázdné údaje doplnit. Předpokládám, že máš jen jednu hlavní databázi kešek v ČR
  • 0

#9 suplere

suplere

    Advanced Member

  • Members
  • PipPipPip
  • 408 příspěvků(y)

Publikováno 29 únor 2008 - 11:27

Mion napsal/a:
no mně to nějak přijde, že chceš něco vyplnit zrovna podle toho, co tam chceš doplnit a co tam ještě není :)

Nějak si nedovedu představit, jakým stylem máš vybrané keše, do kterých chceš vepsat do UserNote2 ten údaj o konkrétním kraji.
Nejdřív musíš mít v GSAK filtrem vyselektované keše, které náleží do dané oblasti (to nechápu přesně jak uděláš - ručně?) Pak tento seznam můžeš projet makrem a všechny prázdné údaje doplnit.
Předpokládám, že máš jen jednu hlavní databázi kešek v ČR


Ma ulozeny filtr v Arc/poly ma nacten ze souboru polygon a filtruje to co je uvnitr....

Ale pokud ma ve filtru jen User2 Data = kraj, tak tak to samosebou fungovat na nove nebude.....

To Mion: pokud by jsi chtel soubory polygonu podle kraju, tak jsou bud nekde na Navigovat.cz nebo mohu zaslat
  • 0

#10 Mion

Mion

    Mion

  • Members
  • PipPipPip
  • 945 příspěvků(y)

Publikováno 29 únor 2008 - 11:32

suplere napsal/a:
pokud by jsi chtel soubory polygonu podle kraju, tak jsou bud nekde na Navigovat.cz nebo mohu zaslat

Ahaa, to jsem netusil, to muze byt pro GSAK dobra vychytavka na snadne pridani do popisu ke kesi o jaky kraj jde.
  • 0

#11 suplere

suplere

    Advanced Member

  • Members
  • PipPipPip
  • 408 příspěvků(y)

Publikováno 29 únor 2008 - 11:36

Jo uz to tady forem probehlo....ja to pouzivam jeste jinak: Na mapach CZ si ulozim GPXko s trasou co jedu, prevedu na jednoduchy textak (pres babel), kde jsou jen souradnice bodu pak ho nahraju do GSAKu jako Line a dam vzdalenost 1km, zvolim nenalezene A voala a mam kesky podel cesty....
  • 0

#12 FHonza

FHonza

    Advanced Member

  • Members
  • PipPipPip
  • 321 příspěvků(y)

Publikováno 29 únor 2008 - 11:38

Polygony krajů jsem kdysi dal tady http://gc.fa-fa.org/kraje_cr.php
velká města tady: http://gc.fa-fa.org/mesta_cr.php
Případně ještě můžu dodat dělení na katastry
  • 0

#13 suplere

suplere

    Advanced Member

  • Members
  • PipPipPip
  • 408 příspěvků(y)

Publikováno 29 únor 2008 - 11:46

Tak jsem to vyzkousel a funguje to.... Jinak nevite nekdo, jestli se da nejak programove nacist soubor do filtru Arc/Poly, abych nemusel mit ulozeny filtry podle kraju? Poradite mi jak na to?
  • 0

#14 Mejstro

Mejstro

    Advanced Member

  • Members
  • PipPipPip
  • 529 příspěvků(y)

Publikováno 29 únor 2008 - 11:58

Tak vypada, ze tohle funguje :-) - Diky moc
# 01 - Kraj Jihocesky
FILTER Name="Kraj: Jihocesky"
Goto Position=Top
While not($_eol)
IF ( $d_User2="" ) 
$d_User2="Kraj: Jihocesky"
ENDIF
Goto position=next 
ENDWHILE
PS: ano, mam filtry arc/poly dle kraju
  • 0
Honza a Péťa Mejstříkovi
Beroun
Garmin Oregon 550t + Topo Czech 2010 PRO + GSAK 7.7.x

#15 Mejstro

Mejstro

    Advanced Member

  • Members
  • PipPipPip
  • 529 příspěvků(y)

Publikováno 29 únor 2008 - 12:01

suplere napsal/a:
Jo uz to tady forem probehlo....ja to pouzivam jeste jinak:

Na mapach CZ si ulozim GPXko s trasou co jedu, prevedu na jednoduchy textak (pres babel), kde jsou jen souradnice bodu
pak ho nahraju do GSAKu jako Line a dam vzdalenost 1km,
zvolim nenalezene

A voala a mam kesky podel cesty....


A nemohl bys prosim poskytnout nejake know how, jak to delas? To take vypada na dobrou vychytavku :-)
Diky
  • 0
Honza a Péťa Mejstříkovi
Beroun
Garmin Oregon 550t + Topo Czech 2010 PRO + GSAK 7.7.x

#16 suplere

suplere

    Advanced Member

  • Members
  • PipPipPip
  • 408 příspěvků(y)

Publikováno 29 únor 2008 - 12:17

KnowHow mas v tom prispevku, ja na to behem vikendu udelam makro...

To Mion: byla by moznost ho potom s nejakym popisem vystavit u tebe na strankach?

Jinak tohle by melo fungovat taky:
FILTER Name="Kralovehradecky"
MFILTER Expression=( ISEmpty($d_User2 ) ) JOIN=AND
IF $_FilterCount >0
  GOTO POSITION=Top

  WHILE not($_eol)

     $d_User2="Kralovehradecky"

     GOTO POSITION=next
  ENDWHILE

ENDIF

A je to rychlejsi nez ten IF (neprobira cely filter podle Kraje), jen si musis prejmenovat jmeno filtru a polozku v User2. Jeste jsem tam doplnil IF $_FilterCount, protoze pokud by byl filtr prazdny prejelo by to celou databazi.
  • 0

#17 Mion

Mion

    Mion

  • Members
  • PipPipPip
  • 945 příspěvků(y)

Publikováno 29 únor 2008 - 12:38

proč by ne, jasně
  • 0

#18 suplere

suplere

    Advanced Member

  • Members
  • PipPipPip
  • 408 příspěvků(y)

Publikováno 29 únor 2008 - 12:58

Do vyse uvedeneho vypisu jsem jeste pridal kontrolu na to, jestli filtr neco obsahuje (IF $_FilterCount), protoze bz se jinak filtr vypl a makro by naplnilo celou databazi....
  • 0

#19 Mejstro

Mejstro

    Advanced Member

  • Members
  • PipPipPip
  • 529 příspěvků(y)

Publikováno 29 únor 2008 - 13:14

Mockrat Vam vsem dekuji za pomoc :-) Ted to funguje perfektne.
  • 0
Honza a Péťa Mejstříkovi
Beroun
Garmin Oregon 550t + Topo Czech 2010 PRO + GSAK 7.7.x

#20 suplere

suplere

    Advanced Member

  • Members
  • PipPipPip
  • 408 příspěvků(y)

Publikováno 29 únor 2008 - 14:01

Takze postup co se tyce filtru Kesi po ceste: 1. na www.mapy.cz si nechate najit trasu od do a ulozite jako GPX 2. v GSAKu si nejedete na Filters a na zalozce ARC/POLY si nactete soubor route.gpx, ktery ulozily mapy.cz. 3. zvolite si Arc/Line a dale distance v km od zadane trasy 4. muzete si pridat dalsi podminky do filtru (ja si treba nastuvuju pouze Nenalezene) a date GO... Makro prozatim nema cenu delat, nebot nevim jak bych mel nahrat soubor do Filtru a jak nastavit Distance.....
  • 0




0 uživatel(ů) prochází toto téma

0 uživatelů, 0 návštěvníků 0 anonymních uživatelů

Reklama