Makro pro GSAK

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

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="" )

Ahoj,
moc dekuji, vyzkousim a dam vedet, zda to funguje :slight_smile:

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

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

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

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…

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í :slight_smile:

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

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

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…

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

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?

Tak vypada, ze tohle funguje :slight_smile: - 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

A nemohl bys prosim poskytnout nejake know how, jak to delas? To take vypada na dobrou vychytavku :slight_smile:
Diky

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.

proč by ne, jasně

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…

Mockrat Vam vsem dekuji za pomoc :slight_smile: Ted to funguje perfektne.

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…