SOFTDATA d.o.o. SDMS CESTA

Pogosta vprašanja
(Razno)

Pregled pogostih vprašanj

Kako izrišem celoten objekt (npr. meja) občine v Poročilu?

Nobody, pravice editiranja, urejanja,...?

Problematika leta 2000 ?

Kako izvedem oštevilčevanje strani v poročilu ?

Kako lahko sortiram polja znotraj MultipleDataSeta?

Kako razbijem poligone v polilinije ?

Kako izrišem celoten objekt (npr. meja) občine v Poročilu?

V kontrolo Ob izrisu , za karto vpišite naslednjo proceduro
Border = True
BorderColor = Black
Window (CurRec.MinY-100, CurRec.MinX-100, CurRec.MaxY+100, CurRec.MaxX+100)

Nobody, pravice editiranja, urejanja,...?

Nobody je mišljen za to, da uporabniku absolutno prepreči spreminjanje nekega objekta. Tu govorim o uporabniku v smislu FIRME, ne pa kot oseba. Vsak uporabnik namreč ima administratorsko geslo in to pomeni, da se določenih stvari ne bi moglo zaščititi.

Pred nastavitvijo Nobody je seveda opozorilo, ki to odsvetuje. Če pa bi že prišlo do pomote, Vam lahko objekt odklenemo mi.

ZAŠČITA PODATKOV

Vse navedene zaščite so zaščite objektov SDMS. Za zaščito podatkov trenutno ni mehanizma, bo pa zelo v kratkem rešeno podobno kot za objekte. Vsaka podatkovna plast bo dobila dva nova atributa (kdo lahko gleda podatke in kdo jih lahko editira).
Pravica kopiranja je nekaj, kar bo šlo v kratkem popolnoma ven. Šlo je za dupliciranje objekta, kopiranje na clipboard, export,... Te pravice bodo prirejene k pravici vpogleda.

Problematika leta 2000 ?

SDMS je Leto2000 kompatibilno in nima nikaršnih tovrstnih problemov.

Kako izvedem oštevilčevanje strani v poročilu ?

V poročilo dodate kontrolo tipa Formula. Nato v rubriko formula vpišite:
Tekoča stran - IntToStr (CurRep.PageCurrent)
Število vseh strani - IntToStr (CurRep.PageCount)
Primer: "Stran: " + IntToStr (CurRep.PageCurrent) + ' / ' + IntToStr (CurRep.PageCount)

Kako lahko sortiram polja znotraj MultipleDataSeta?

Procedura za sortiranje MultipleDataSeta

Sub MDSSort
Dim Lyr As TLayer, SortFld, ValueFld As TField, I, J, K, NumOfFlds As Long
Dim CurDataSet As TDataSet, SortOrder, ValueList As TStringList, N As Float
Lyr = SelectLayer
If Assigned ( Lyr ) Then
SortFld = SelectField ( Lyr )
If Assigned ( SortFld ) Then
CurDataSet = SortFld.Parent
NumOfFlds = CurDataSet.FieldCount
ValueList = CreateStringList
SortOrder = CreateStringList
Lyr.BeginMultipleUpdate
For J = 0 To Lyr.AllRecords.Count - 1
Hint ( 'Obdelujem ' + IntToStr ( J + 1 ) + ' od ' + IntToStr ( Lyr.AllRecords.Count ) )
Lyr.CurrentRecord = Lyr.AllRecords.Items ( J )
If SortFld.FieldType = ftNumber Then
SortOrder.Add ( FloatToStr ( SortFld.LineAsNumber ( 0 ) ) )
SortOrder.Data ( 0 ) = 0
For I = 1 To SortFld.LineCount - 1
N = SortFld.LineAsNumber ( I )
For K = 0 To SortOrder.Count - 1
If N <= StrToFloat ( SortOrder.Strings ( K ) ) Then
SortOrder.Insert ( FloatToStr ( N ), K )
SortOrder.Data ( K ) = I
Break
EndIf
Next
If N > StrToFloat ( SortOrder.Strings ( SortOrder.Count - 1 ) ) Then
SortOrder.Add ( FloatToStr ( N ) )
SortOrder.Data ( I ) = I
EndIf
Next
Else
For I = 0 To SortFld.LineCount - 1
SortOrder.Add ( SortFld.LineAsString ( I ) )
SortOrder.Data ( I ) = I
Next
SortOrder.Sorted = True
EndIf
Lyr.EditRecord.Edit ( Lyr.AllRecords.Items ( J ) )
For I = 0 To NumOfFlds - 1
ValueFld = CurDataSet.Fields ( I )
For K = 0 To ValueFld.LineCount - 1
ValueList.Add ( ValueFld.LineAsString ( K ) )
Next
For K = 0 To SortOrder.Count - 1
If ValueFld.FieldType = ftNumber Then
Lyr.EditRecord.FldAsNumberMulti ( K, ValueFld ) = StrToFloat ( ValueList.Strings ( SortOrder.Data ( K ) ) )
Else
Lyr.EditRecord.FldAsStringMulti ( K, ValueFld ) = ValueList.Strings ( SortOrder.Data ( K ) )
EndIf
Next
ValueList.Clear
Next
Lyr.EditRecord.Update
SortOrder.Sorted = False
SortOrder.Clear
Next
Lyr.EndMultipleUpdate
Message ( 'Obvestilo', 'Urejanje od A - Z končano !' )
SortOrder.Destroy
ValueList.Destroy
EndIf
EndIf
EndSub

Kako razbijem poligone v polilinije ?

Uporabite spodnjo proceduro PolygonToPolyline

Sub PolygonToPolyline
Dim L1 as TLayer, L2 As TLayer
Dim a as String
L1 = SelectLayer ("Izberi poligonsko plast")
If Not Assigned (L1) Then Exit Endif
a = L1.Name + " polilinijska"
If Not InputText ("Ime polilinijske plasti","Vnesi ime polilinijske plasti",a) Then Exit EndIF
If Length (a) = 0 Then Exit EndIF
L2 = L1.Duplicate ( False )
L2.Name = a
L2.Comment = "Plast je narejena iz plasti " + L1.Name
L2.Store
Hint ("Razbijanje poligonov v polilinije...")
L1.TopologyBreak ( L2 , False )
Hint ("Končano")
EndSub