SOFTDATA d.o.o. SDMS CESTA

Pogosta vprašanja
(Filter)

Pregled pogostih vprašanj

Kako iščem (filtriram, analiziram,...) po polju tipa datum?

Kako poiščem dvojnike v bazi podatkov?

Kako grafično prikažem filtrirane podatke?

Analize, poišči največjo vrednost v poligonski plasti: Cur.RecY ali X vrne napako !

Ali je možno določiti pogoj npr. 200m levo od polilinije (enostranski buffer) ?

Kje se briše kakšna od prednastavljenih nastavitev za filter, masko, poročilo, izvozni in uvozni zapis?

Če sprožim filter iz ukaza na desni tipki miške iz seznama teme,
se po končanem filtriranju NE odpre Maska, s seznamom filtriranih podatkov. Zakaj?

Kako filtriraš po dveh poljih v večkratnem nizu podatkov?

Kako iščem (filtriram, analiziram,...) po polju tipa datum?

Opis problema:- V podatkovni plasti se nahaja polje tipa datum (Datum/Čas), v katerega so bili vneseni datumi. Želimo poiskati vse zapise, kateri so bili zapisani od določenega datuma dalje.
Za pravilno izvajanje razmerij po datumih se mora datum v filter funkciji opredeliti kot številčna vrednost, in datum je potrebno pisati v obliki kot je opredeljeno v področnih nastavitvah (Regional Settings). Prav tako morate pri vnosu datuma vnašati separator, kateri je naveden v področnih nastavitvah. Primer:
- [Datum popisa].AsNumber > StrToDate ("16.04.98")
- [Datum popisa].AsNumber > #16.04.98#
Vseeno je ali napišete leto z dvema mestoma ali štirimi (98 ali 1998). Prav tako lahko pri samem vnosu vtipkate samo dan, separator in mesec (16.4), leto pa se bo samodejno dodalo, ko boste zapustili polje.

Kako poiščem dvojnike v bazi podatkov?

Uporabite proceduro FindDuplicates (Layer), katera vam poišče podvojene zapise v celoti ali po izbranih poljih. Dvojnike vam procedura zapiše v dialog, iz katerega jih lahko odstranite.

Kako grafično prikažem filtrirane podatke?

Filtrirane podatke lahko grafično ločite od ostalih z lastnostjo Filtered . Primer: Tema: Simbol, lastnost: Barva

If Filtered Then Result = Red Else Result = Green EndIF

Analize, poišči največjo vrednost v poligonski plasti: Cur.RecY ali X vrne napako !

Napaka je v sintaksi. Pravilno CurRec.Y in CurRec.X
Če dvokliknete na CurRec.Y ali CurRec.X , se ime samo prenese v SQL polje
CurRec.Y in CurRec.X predstavljata 'centroid' za dani zapis
CurRec.MinY pa najmanjši Y točke na poliliniji/poligonu
CurRec.MinX pa najmanjši X točke na poliliniji/poligonu
CurRec.MinZ pa najmanjši Z točke na poliliniji/poligonu
....
....
Vendar, ne glede na to se še vedno ne da poiskati največje ali najmanjše vrednosti za katerikoli CurRec. v Filtru
Lahko pa se to stori na naslednji način:
V Urejevalniku za Plast dodajte polje Npr CentroidY, tipa Številka , oblika #,##0.00 ter Formula CurRec.Y
V aplikaciji izvedite filter, nato v Maski izvedite sort po tem polju in prvi je najmanjši, zadnji največji, ali obratno, odvisno od načina sortiranja.
Tako za vsa CurRec. polja.

Ali je možno določiti pogoj npr. 200m levo od polilinije (enostranski buffer) ?

Ne, ker je v GIS-u oziroma v realnem svetu leva stran relativna, pač glede na izhodišče in smer gledanja.
Lahko pa si s pomočjo urejevalnika geometrije, izdelate ustrezen poligon (buffer), ki vam služi kot omejitev prostorske lokacije.

Kje se briše kakšna od prednastavljenih nastavitev za filter, masko, poročilo, izvozni in uvozni zapis?

V editorju podatkovne plasti, v posamezni rubriki podobjekta (Filter, sort, maska, poročilo, uvoz, izvoz). Na levi strani je seznam vseh prednastavljenih nastavitev
Označite in brišite.

Če sprožim filter iz ukaza na desni tipki miške iz seznama teme,
se po končanem filtriranju NE odpre Maska, s seznamom filtriranih podatkov. Zakaj?

Ni vedno obvezno da se rezultat filtra demonstrira v Maski.
Npr: Če v neko temo v rubriko Pogoj zapišete Filtered, potem se bo po končanem filtru in osvežitvi ekrana
izrisali samo filtrirani zapisi.

Rešitev v tem primeru: uporabljate funkcije iz menija Analiza, kjer se po končanem filtriranju še odpre maska s seznamom filtriranih podatkov, ali pa po filtru, nad temo kliknite na desno tipko na miški in izberite Maska

Kako filtriraš po dveh poljih v večkratnem nizu podatkov?

Ker pogoj
([a1].AsLines Like 'inz') And ([a2].AsLines Like 'varno*')
ne zagotavlja, da sta podatka v istem nizu, lahko to rešimo na naslednji način.
V nek modul dodamo proceduro
//*********************************************************************
Function IsInMultipleDaS (AsLin1, AsLin2, Cond1, Cond2 As String) As Boolean
Dim Sl1, Sl2 As TStringList
Dim I As Long
Sl1 = CreateStringList
Sl2 = CreateStringList
Sl1.Text = AsLin1
Sl2.Text = AsLin2
Result = False
If Sl1.Count = Sl2.Count Then
For I = 0 To Sl1.Count - 1
If Sl1.Strings (I) Like Cond1 Then
If Sl2.Strings (I) Like Cond2 Then
Result = True
Break
EndIf
EndIf
Next
EndIf
Sl1.Destroy
Sl2.Destroy
EndFunction
//*********************************************************************
V filtru pa kličemo to proceduro.
IsInMultipleDaS ([a1].AsLines, [a2].AsLines, 'inz','varno*')