Vilkår for brug GIS-Byggesag 1 af 48



Relaterede dokumenter
Værktøjer fra værktøjskassen. Søren Breddam, Stevns Kommune

MapBasic hvad kan det bruges til? Insights Danmark 2011

Opsætningsfiler, menuer og menupaletter workshop

MapBasic brugergruppe. Geografiske objekter. Peter Horsbøll Møller Senior Systems Engineer April 2013

MapBasic brugergruppe. Introduktion til MapBasic. Peter Horsbøll Møller Senior Systems Engineer Januar 2013

Nyheder i MapBasic 10.5 og 11.0

MapBasic brugergruppe. SQL i MapBasic. Peter Horsbøll Møller Senior Systems Engineer Marts Slå mute fra hvis I vil sige eller spørge om noget

Derfor vil jeg bygge dette eksempel på een table hvor der kan tilkyttes personer til ALLE noder og der kan tilføjes et vilkårligt antal niveauer

Hent filoplysninger fra billeder og filer

Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach 2002

Referencer i MicroStation V8i SelectSeries1

Opret en Powerpoint præsentation automatisk med VBA

MapBasic Workshop. Peter Horsbøll Møller Systems Engineer Pitney Bowes Business Insight

MS Visual Studio Basic En kort vejledning

"# $%$ " # $ % $ $ " & ( ) *+!,! Sum_Cost >= 5000SirName = Beltov Continue = %!- + ( ( - True) Continue *! If Antal <= 20 Then EnhedsOmk = 1.

Manual for installation og brug af Ad-aware version 2007

" #" $ " "!% &'% ' ( ) * " & #

Selection Udvælgelse. For at markere mere end en polygon, holdes Ctrl samtidig. Klik på næste polygon. Gentag for i alt 5 polygoner.

Indholdsfortegnelse Forord...8 Makroer samt aktivere Udvikler-fanen...10 Makrosikkerhed (Sikkerhedsindstillinger)...13

JAR Øvelse nr. 2. JAR-Manual, Version 1.0. Avanceret søgning. Regionsvejledning

' #$*# ' # #) * #& #& ' # #* #, #$--

3D NASAL VISTA TEMPORAL

HMN Naturgas - WebGIS

Side 1 af 7

3D NASAL VISTA 2.0

GIS - Byggesag Version 1.1 Bruger- og Installationsvejledning

SmartAir TS1000. Daglig brug

vil jeg blive mindet om det af VBA allerede mens jeg skriver koden, da der er tale om en såkaldt kompileringsfejl:

Kom godt igang med Inventar registrering

IT Support Guide. Installation af netværksprinter (direkte IP print)

QUICKGUIDE TIL XMEDIA

StarWars-videointro. Start din video på den nørdede måde! Version: August 2012

Workshop G4 MicroStation V8 XM edtion nye værktøjer 2

RefWorks Workshop Medicinsk Bibliotek Aalborg Universitetshospital. Oprettelse af konto/log in RefWorks-databasen... 2

Udvikling af DOTNET applikationer til MicroStation i C#

Hjælp under login på Mit DLR Oktober 2015

Skrivebordet Windows 10

Click to edit title style. Få mere ud af dine kort. Tom Probert Peter Horsbøll Møller

Login side 3. Upload af billeder side 8. Upload billeder via Drag&Drop side 14. Udfyld og indsæt valgfri side i playlisten side 17

Visual Basic for begyndere

NAVOKAT 2014 Kom godt i gang

Flotte mosaikbilleder

Installation og opsætning af Outlook klient til Dynamics CRM

Betjeningsvejledning. for. UniRace

Android-app til Legacy pa Windows-pc

Help / Hjælp

Indhold. Hvordan skaffes programmet. 1 af 13. AVG Antivirus

! #!! $ % $! & " &'"! & *+ "! " $ $ ""!,-! $!.! $! " # 1!! &' "

Vejledning til installation af Outlook Kalender Integration

Data load og udtræk. 2. iteration: implmentation (test af backend) PHP mysql. Loade og parse XML (SimpleXML, Xpath) Filhåndtering i PHP JSON

BRUGERVEJLEDNING STANDTEKST

Kom godt i gang med OneDrive

! " # $% &'!& & ' '" & # ' "&()(*& + + +,-' "&( # &(! (! " )(!# &!! (!&!! * (! +& (!!! & " " & & / & & (!

% &$ # '$ ## () %! #! & # &, # / # 0&. ) / & #& #

Denne vejledning beskriver integration mellem miljø- og byggesagssystemet GeoEnviron (GE) og ESDH-systemet edoc, der er udviklet af Fujitsu.

Rigtig SQL Programmering

Fjernopkobling. - Vejledning i førstegangs fjernopkobling via en IKKE. Banedanmark pc

Installér din Officepakke 2013

Rem =========================================================== 1 Rem =========================================================== Rem A_Print Procedur

Start på Arduino og programmering

Udviklingstab, og hvordan man sætter instilling i dansk office 2007 som jeg bruger herhjemme.

Anklagemyndighedens Vidensbase

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0

Installation af Novapoint 19.35

Adobe Elements Lektion 2

PID2000 Archive Service

Guide. Administration af FDF.dk/Nyborg. 1. Udgave Ide og layout Christoffer S. Rasmussen

! "# $$ &'()*"* +*, & &"*0* & "# % %- %

MapBasic &.NET interaktion. MapBasic.NET. Jakob Lanstorp IT konsulent COWI. Odense 23. Juni jun 2011 MapBasic &.

Brugervejledning til diverse i OS X

Tastevejledning Windows XP

gembart. I et skriv og PDF dokumenter Hvordan 1. Åbn 2. Åbn åbnes. filen 1 af 6

Modul 8: Clouds (Lagring af filer)

Opsætning af Backup. Hvis programmet registreres korrekt vises nedenstående skærmbillede. Genstart herefter programmet.

Flettebreve og Doc2mail

Sådan får du Salmebogen på CD-ROM til at fungere i Internet Explorer 7 både under Windows XP og Windows Vista

Hvordan laver jeg mit eget kort på ArcGIS Online?

Brugermanual. Tripple Track Fleet

Quickguide Tele- og webkonference via UC

Opret og godkend betalinger i mapper

Dansk Ride Forbund Stævnesystem 2 Installationsvejledning

Netkatalog upload. Forord: Formål:

Vejledning til Blackboards portfolio værktøj

[MARKONLINE I CITRIX]

WebGT Graveansøgning. Brugervejledning. 25. september Udgave 1.0

BRUGER KURSUS RAMBØLL HJEMMESIDE

Advanced Word Template Brugermanual

REFWORKS vejledning til Nationale Kliniske Retningslinjer Fagkonsulentens version (december 2013)

ConText Adaptation Vejledning til TGK-ordbogen

Her kan man oprette et nyt slideshow ved at trykke på kassen med "Opret nyt slideshow". Dette fører en til "Rediger slideshow".

Opsætning af Backup. Dette er en guide til opsætning af backup med Octopus File Synchronizer.

De vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML

Få sin querystring til at fungere. (Nybegyndere)

Contents. WorkZone Process 2013

Before you begin...2. Part 1: Document Setup...3. Part 2: Master Pages Part 3: Page Numbering...5. Part 4: Texts and Frames...

RUTruteplanlægningsvejledning. Folkekirkens Nødhjælp Sogneindsamling 2015

Design Diaries.

Quick guide til e-learn.sdu.dk (Blackboard) for studerende

Indholdsfortegnelse PSpice modul 3. Forudsætninger. Forberedelse til øvelser

Eksamen, DSDS, forår 2009

Transkript:

Vilkår for brug GIS-Byggesag 1 af 48 Tak Tak til Bo Thomsen, GeoConsult For at stille PickDate.dll til rådighed via DirectionsMag.com. Den gamle kalenderfunktion var både grim og dårlig. Resultatet var i skærende kontrast til den forbrugte tid, og antallet af kodelinier var omvendt proportionalt med det designmæssige udtryk. Mapbasic kunne godt snart blive lidt mere visual Pickdate.dll er svagt modificeret. Tak til Kevin G. Mahoney For kodeinspiration. Det må indrømmes, at dialogboksen til Wordskabelonerne og Om-boksen næsten er skrevet af. Tak til de flinke brugere af MapInfo-L på DirectionsMag.com. Det er helt mageløst, hvor megen hjælp man kan få her. Vilkår for brug GIS-Byggesag leveres inkl. kildekode. Modtager har ret til at bortgive kopier af GIS-Byggesag, samt at rette fejl og foretage tilretninger. Modtager har desuden ret til at modificere og distribuere programmet. Modtager har også mulighed for at bundle programmet med andre typer software, dog ikke lukket software. Modtager må tage hensigtsmæssig betaling for kopiering og installation af "pakken/programmet", men ikke for tilretning af kode, med mindre andet aftales med forfatterne. Hvis Modtager vil modificere programmet, er han forpligtet til enten at gøre sine modifikationer frit tilgængelige eller kun anvende modifikationen internt. Man er altid forpligtet til at underrette de oprindelige ophavsmænd om ændringerne, så disse kan komme alle brugere af programmet til gavn. Hvis Modtager vil distribuere det oprindelige program med eller uden modifikationer er han forpligtet til at distribuere GIS-Byggesag sammen med oplysninger om, hvor det er muligt at få fat på GIS-Byggesag (det oprindelige program) og oplysninger de oprindelige ophavsmænd. De oprindelige ophavsmænds navne eller produktnavn må ikke bruges til at sælge afledte produkter.

Project-fil Samler alle moduler GIS-Byggesag 2 af 48 [Link] Application=Byg.mbx Module=Byggesager.mbo Module=Byggesagsdato.mbo Module=Sag.mbo Module=Word.mbo Module=Toolhandler.mbo Module=Lagkontrol.mbo Module=Nabohøring.mbo Module=Functions.mbo Module=Om.mbo

Modul Byggesager GIS-Byggesag 3 af 48 Include "Mapbasic.def" Include "Icons.def" Include "Menu.def" Declare Sub Main Declare Sub Lagkontrol Declare Sub Send Declare Sub Word Declare Sub find(i_dag, i_sagbeh as Smallint, l_alle as Logical) Declare Sub ChkBruger Declare Sub Søg Declare Sub Zoom Declare Sub FjernSøgning Declare Sub Commit Declare Sub Ejerflet Declare Sub ToolHandler Declare Sub Opdater Declare Sub Dato(datostreng as String) Declare Sub PickTheDate Lib "PickDate" (Byval posx as integer, Byval PosY as integer, Year as integer, Month as integer, Day as integer) Declare sub Dialog (i_sagstype, i_sagbeh AS INTEGER, s_bygemne, s_statusnotat, s_sagind, s_bygnummer, s_ans, s_ans_adr, s_postdist AS STRING, l_egensag, l_word as logical) Declare Sub ChkSag Declare Sub Sagsrapport Declare Sub Statusnotat Declare Sub AfslutSag Declare Sub FærdigmeldSag Declare Sub Statistik Declare Sub Om Declare Sub Admin Declare Sub Help Declare Sub EndHandler() Declare Sub Afslut Declare Sub WinClosedHandler Declare Function ErTabelÅben(ByVal Tabelnavn as String) as Logical Declare Function DanListe$(ByVal TabelNavn as String, ByVal KolNavn as String) as String Declare function GetUserName lib "advapi32.dll" alias "GetUserNameA" (lpbuffer as String, nsize as Integer) as Integer Declare Function user_name_is() as String Global gs_arbsti, gs_wordsti, gs_brugere, gs_brugernavn, gs_flettesag As String Global gi_dataliste As SmallInt, gi_winid as Integer Global gl_dblklik, gl_valgok, gl_btnpad, gl_diaok, gl_outltask As Logical Sub Main Dim i, j As SmallInt, Tabelnavn as String, l_lagok as Logical gs_arbsti = ApplicationDirectory$() OnError GoTo Fejl gi_winid=0 Open Table gs_arbsti + "Dataliste" As Dataliste Interactive Open Table gs_arbsti + "Brugere" As Brugere Interactive Open Table gs_arbsti + "Skabeloner" As Skabeloner Interactive Open Table gs_arbsti + "Wordsti" As Wordsti Interactive Open Table gs_arbsti + "Udvidelser" As Udvidelser Interactive 'Hide 'Hide 'Hide 'Hide 'Hide

Modul Byggesager GIS-Byggesag 4 af 48 Open Table gs_arbsti + "Bufferudvidelser" As Bufferudvidelser Interactive' Hide Fetch first From Wordsti gs_wordsti=wordsti.wordsti 'Brugerlisten dannes -> div dialogbokse: gs_brugere=danliste$("brugere","navn") 'Brugeren findes: Select * From Brugere Where Initialer like user_name_is() Into a NoSelect gs_brugernavn=a.navn gl_outltask=a.outlookopgave If gs_brugernavn="" Then Note "Du er ikke oprettet som bruger. Du kan Foretage de nødvendige ændringer i tabellen BRUGERE." Else Print gs_brugernavn+" er logget på som bruger." 'Kontrol af om nødvendige tabeller er åbne: For i = 1 to NumWindows() Next If WindowInfo(WindowID(i), WIN_INFO_TYPE) = WIN_MAPPER 'Kortvindue Then gi_winid=windowid(i)'med nummer i Set Window gi_winid Front Exit For End if For i =1 to TableInfo(Dataliste, TAB_INFO_NROWS ) Fetch rec i From Dataliste Tabelnavn=Dataliste.DataAlias If ErTabelÅben(Tabelnavn)<>1 Then 'Tabellen er ikke åben Run Command "Open Table "+""""+Dataliste.Sti+""""+" As "+Tabelnavn+" Interactive" If gi_winid>0 ' Så er et vindue åbent Then Add Map Auto Layer Tabelnavn Else 'Der ikke noget åbent vindue Map From Tabelnavn gi_winid=frontwindow() End if Else' Tabellen er åben If gi_winid>0 'Så er der et kortvindue åbent - er den tilføjet i lagkontrollen? Then For j =1 to MapperInfo(gi_WinId, MAPPER_INFO_LAYERS) If LayerInfo(gi_WinId, j, LAYER_INFO_NAME )=Tabelnavn

Modul Byggesager GIS-Byggesag 5 af 48 Then l_lagok=true exit For End if Next Next If not l_lagok Then Add Map Auto Layer Tabelnavn End if Else 'Der er ikke noget kortvindue Map From Tabelnavn gi_winid=frontwindow() Create Menu "&Byggesag" As "&Til start" Calling Main, "(-", "&Statistik" HelpMsg "Beregn statistik på alle byggesager" Calling Statistik, "(-", "&Om programmet..." HelpMsg "Beskrivelse af dette program" Calling Om, "(-", "&Administrér..." HelpMsg "Brugerindstillinger, filplaceringer m.m." Calling Admin, "(-", "&Hjælp" Calling Help, "(-", "Afslut Byggesag" Calling Afslut Alter Menu Bar Add "Byggesag" If not gl_btnpad 'Så er padden ikke defineret Then Create Buttonpad "Byg" as ToolButton HelpMsg "Opret ny byggesag\nopret ny byggesag" Cursor MI_CURSOR_CROSSHAIR Calling Toolhandler Icon 16 PushButton Icon 113 File gs_arbsti + "\Byggesag.dll" Calling søg HelpMsg "Find byggesager efter dato \nfind byggesager efter dato" PushButton Icon 101 File gs_arbsti + "\Byggesag.dll" Calling Send HelpMsg "Send de udvalgte poster til Word \nflet data i Word" 'PushButton ' Icon 233 File gs_arbsti + "\MLQT32.dll" ' Calling FjernSøgning ' HelpMsg "Fjern alle søgninger\nfjern alle søgninger"

Modul Byggesager GIS-Byggesag 6 af 48 PushButton PushButton id 9 PushButton pushbutton PushButton PushButton PushButton PushButton HelpMsg "Find udvalgte og zoom\nfind udvalgte og zoom" Calling zoom Icon 192 HelpMsg "Gem Byggesagstabel\nGem Byggesagstabel" Calling commit Icon 40 HelpMsg "Opdatér Byggesagstabel\nOpdatér Byggesagstabel" Calling Opdater Icon 127 File gs_arbsti + "\Byggesag.dll" helpmsg "Vis sagsoplysninger i Notesblok\nVis sagsoplysninger i Notesblok" calling Sagsrapport icon MI_ICON_MISC_7 id 195 HelpMsg "Nabohøring\nNabohøring" Calling Ejerflet Icon 119 File gs_arbsti + "\Byggesag.dll" HelpMsg "Skriv et statusnotat\nskriv et statusnotat" Calling Statusnotat Icon 131 File gs_arbsti + "\Byggesag.dll" HelpMsg "Sæt status til afsluttet på den valgte sag. Sagsbehandlingen er færdig.\nsæt status til afsluttet på den valgte sag. Sagsbehandlingen er færdig." Calling AfslutSag Icon 121 File gs_arbsti + "\Byggesag.dll" HelpMsg "Færdigmelding er modtaget. Opdatér status på den valgte sag\nfærdigmelding er modtaget. Opdatér status på den valgte sag" Calling FærdigmeldSag Icon 125 File gs_arbsti + "\Byggesag.dll" Title "BYG" 'width 2 ToolbarPosition (2,0) Fixed show gl_btnpad=1 'Buttonpads er nu defineret 'Create Buttonpad Select * From Byggesager Where Færdigmeldt=0 order by Huskedato Into Alle_sager noselect

Modul Byggesager GIS-Byggesag 7 af 48 Select * From Byggesager Where Sagsbehandler = gs_brugernavn and Færdigmeldt=0 'Her benyttes "Færdigmeldt", Fordi en afsluttet sag stadig skal varetages af sagsbehandleren. Den dukker ikke op i "Forfaldne sager". order by Byggesager.Afsluttet, Byggesager.Huskedato asc Så kommer de afsluttede til sidst og forstyrrer ikke så meget Into Egne_sager noselect Browse Huskedato, Emne, Statusnotat, Beliggenhed, Sagstype From Egne_sager Add Map Layer Alle_sager Set Map Layer Alle_sager Display off Add Map Layer Egne_sager Set Map Layer Egne_sager Display Global Global Symbol (34,16776960,12) Set Map Layer Byggesager Display off Select * From Byggesager Where Sagsbehandler like gs_brugernavn And Huskedato - CurDate() <= 0 and Afsluttet=0 'Her benyttes "Afsluttet", da sagsbehandleren ikke er ansvarlig For bygherrens Forhold. Lad os se, om det virker... Into Forfaldne_byggesager order by Huskedato asc noselect If TableInfo(Forfaldne_byggesager,TAB_INFO_NROWS)>0 and gl_diaok=0 'gl_diaok: Er der ikke Foretaget handlinger i programmet, skal sagsbehandleren advares... Then Add Map Layer Forfaldne_byggesager Set Map Layer 1 Display Global Global Symbol MakeSymbol(35,RED,18) Browse * From Forfaldne_byggesager Note "Der er sager, hvor huskedatoen er Forfalden, og sagen ikke er afsluttet!"+chr$(13)+ "Datoen kan ændres ved at markere byggesagen og trykke på ""Opdatér Sag"""+chr$(13)+ "Sagen kan sættes til færdigbehandlet ved at markere sagen og trykke på ""SAG SLUT""" gl_diaok=1 'Print gl_diaok+" Dialog" Else Close Table Forfaldne_byggesager End if Call Lagkontrol Fejl: Print "Fejl"+chr$(13)+Error$() Resume Next End Sub 'Main Sub søg dim i_dage, i_sagbeh as Smallint, l_egensag as Logical DIALOG POSITION 353, 135

Modul Byggesager GIS-Byggesag 8 af 48 WIDTH 101 HEIGHT 140 TITLE "Søg byggesager" CONTROL checkbox POSITION 12, 77 Title "Egne sager" id 9012 Value 1 calling ChkSag Into l_egensag CONTROL GroupBox POSITION 5, 3 WIDTH 89 HEIGHT 55 CONTROL StaticText POSITION 12, 8 WIDTH 87 HEIGHT 23 TITLE "Søg byggesager med huskedato indenfor de næste:" CONTROL EditText POSITION 25, 35 WIDTH 20 HEIGHT 12 ID 11 VALUE "14" Into i_dage CONTROL StaticText POSITION 47, 40 WIDTH 40 HEIGHT 30 TITLE " dage" CONTROL GroupBox POSITION 5, 65 WIDTH 89 HEIGHT 45 TITLE "Sagsbehandler" CONTROL PopUpMenu POSITION 11, 90 WIDTH 78 ID 9004 TITLE "Sagsbehandler;"+gs_brugere Into i_sagbeh Disable CONTROL OKButton POSITION 31, 118 WIDTH 38 HEIGHT 14 TITLE "OK" If ( CommandInfo( CMD_INFO_DLG_OK)) Then CALL find(i_dage, i_sagbeh, l_egensag) End if End Sub 'søg

Modul Byggesager GIS-Byggesag 9 af 48 Sub ChkBruger OnError GoTo Fejl If ReadControlValue(1) 'Hak i alle sager Then Alter Control 11 Disable 'Dagsøgning Else Alter Control 11 Enable Fejl: Print "Fejl chkbruger: "+Error$() End Sub 'ChkBruger Sub find(i_dage, i_sagbeh as Smallint, l_egensag as Logical) dim ssagbeh as String OnError GoTo Fejl If l_egensag=false Then Fetch rec i_sagbeh-1 From Brugere ssagbeh=brugere.navn Print ssagbeh If ssagbeh="alle" Then ssagbeh="%" End if Else ssagbeh=gs_brugernavn Print ssagbeh Select * From Byggesager Where Huskedato - CurDate()<=i_Dage And Huskedato - CurDate() >= 0 and Færdigmeldt=0 and Sagsbehandler like ssagbeh Into Næste_+str$(i_Dage)+_dage order by Huskedato asc noselect Add Map Layer Næste_+str$(i_Dage)+_dage Set Map Layer 1 Display Global Global Symbol MakeSymbol(34,RED,18) Browse * From Næste_+str$(i_Dage)+_dage 'Else Select * From Byggesager Where Sagsbehandler like ssagbeh And Huskedato - CurDate() <= 0 and Afsluttet=0 Into Forfaldne_byggesager order by Huskedato asc noselect If TableInfo(Forfaldne_byggesager,TAB_INFO_NROWS)>0 Then Add Map Layer Forfaldne_byggesager Set Map

Modul Byggesager GIS-Byggesag 10 af 48 Layer 1 Display Global Global Symbol MakeSymbol(35,RED,18) Browse * From Forfaldne_byggesager Else End if Note ssagbeh+" har sager, hvor huskedatoen er overskredet!"+chr$(13)+ "Datoen kan ændres ved at markere byggesagen og trykke på ""Opdatér Sag"""+chr$(13)+ "Sagen kan sættes til færdigbehandlet ved at markere sagen og trykke på ""SAG SLUT""" Close Table Forfaldne_byggesager Fejl: Print "Find: "+Chr$(13)+Error$() End Sub 'Find Sub FjernSøgning dim lag, i, x as Smallint, clrlayer() as String For i =1 to NumTables() If Left$ (TableInfo(i, TAB_INFO_Name), 5)="Query" or Left$ (TableInfo(i, TAB_INFO_Name), 6)="Næste_" or Left$ (TableInfo(i, TAB_INFO_Name), 5)="Alle_b" Next 'If TableInfo(i, TAB_INFO_TYPE)=2 'Kan bruges i stedet, hvis man bare skal lukke temporære tabeller Then x=x+1 redim clrlayer(x) clrlayer(x)=tableinfo(i, TAB_INFO_NAME) End if For i=1 to x Print "Lukker "+clrlayer(i) close table clrlayer(i) Next End Sub 'FjernSøgning Sub Send 'Danner en tekstfil Dim If 'Print chr$(12) i,kolnr, nkol as Smallint, acol as alias, KOLn, tabnavn, kolnavn(), KolString as String SelectionInfo(SEL_INFO_NROWS)=0 Then Note "Der er ikke valgt objekter eller poster." exit Sub

Modul Byggesager GIS-Byggesag 11 af 48 End if tabnavn = SelectionInfo(SEL_INFO_TABLENAME) nkol = tableinfo(tabnavn,tab_info_ncols) redim kolnavn(nkol) For kolnr = 1 to nkol KOLn ="COL"+ kolnr kolnavn(kolnr)= columninfo(tabnavn,koln,col_info_name) KolString=KolString+kolnavn(kolnr)+";" Next OnError goto done Open File "C:\Byggesag\Byggesager.txt" For Output As #1 CharSet "WindowsLatin1" Print #1, KolString 'Kolonneoverskrifter er nu dannet tabnavn=selectioninfo(sel_info_selname) Fetch First From tabnavn Do While Not EOT(tabnavn) KolString="" For kolnr =1 to nkol acol =Str$(tabnavn+"."+kolnavn(kolnr)) KolString=KolString+aCol+";" Next Print #1,KolString ' Hver række skrives til filen Fetch Next From tabnavn Loop Close File #1 call Word done: Note "Brevflet: Der er problemer med flettefilen eller Word. Luk evt. Word og start programmet igen."+chr$(13)+ Error$() End Sub 'Send til Word Sub zoom cls If SelectionInfo(SEL_INFO_TABLENAME)="" Then goto Hovsa End if Set Window gi_winid Front Set Map Window gi_winid Zoom 50 Units "m"

Modul Byggesager GIS-Byggesag 12 af 48 Run menu Command 306 ' Browse to Selected close table SelectionInfo( SEL_INFO_SELNAME) Exit sub Hovsa: Print "Zoom: "+Chr$(13)+Error$() End Sub 'zoom Sub Commit OnError GoTo Hovsa Commit Table Byggesager Interactive Print "Byggesager er gemt kl. "+ Time(24) Hovsa: Print "Commit: "+Error$() End Sub 'commit Sub Statistik Vi SKAL have noget mere feedback fx fra ledelsen vedr. statistik OnError GoTo Hovsa Select Count(*)"Antal_sager", Month(Huskedato)"Måned",Year(Huskedato)"År", Sagsbehandler From Byggesager Group by Måned,Sagsbehandler Order By Sagsbehandler,Måned Into Statistik_Indgåede_sager Browse * From Statistik_Indgåede_sager Select Count(*)"Antal_sager", Month(Huskedato)"Måned",Year(Huskedato)"År", Sagsbehandler From Byggesager Where Afsluttet=1 Group by Måned,Sagsbehandler Order By Måned,Sagsbehandler Into Statistik_afsluttede_sager Call Sagsrapport Browse * From Statistik_afsluttede_sager Select Count(*)"Antal_sager", Month(Huskedato)"Måned",Year(Huskedato)"År", Sagsbehandler From Byggesager Where Afsluttet=1 and Færdigmeldt=0 Group by Måned,Sagsbehandler Order By Måned,Sagsbehandler Into Statistik_ej_færdigmeldte_sager Call Sagsrapport Browse * From Statistik_ej_færdigmeldte_sager Select Count(*)"Antal",Sagstype, avg(afslutningsdato -stringtodate(sag_indgået))"sagsbehandlingstid, dage" From Byggesager Where Afsluttet=1 Group by Sagstype Into Sagsbehandlingstid Browse * From Sagsbehandlingstid

Modul Byggesager GIS-Byggesag 13 af 48 Hovsa: Print "Statistik: "+Error$() End Sub ' Statistik Sub Sagsrapport Dim i,kolnr, nkol as Smallint, acol as alias, KOLn, tabnavn, kolnavn(), KolString as String Onerror goto slut If Selectioninfo(SEL_INFO_NROWS)=0 Then Note "Der er ikke Foretaget noget valg!"+chr$(13)+"vælg en sag fra Byggesagstabellen og tryk på knappen igen!" End if tabnavn=selectioninfo( SEL_INFO_SELNAME) Så kan rutinen genbruges Print "Danner sagsrapport" nkol = tableinfo(tabnavn,tab_info_ncols) 'Print nkol+" = nkol" redim kolnavn(nkol) Open File "C:\Byggesag\Byggesagsrapport.txt" For Output As #1 CharSet "WindowsLatin1" Print #1, " Sagsoplysninger: "+ tabnavn+chr$(10) Fetch First From tabnavn For i = 1 to Tableinfo(Tabnavn, TAB_INFO_NROWS) For kolnr = 1 to nkol KOLn ="COL"+ kolnr Next Fetch Next From tabnavn Print #1,chr$(10) NEXT Close File #1 kolnavn(kolnr)= columninfo(tabnavn,koln,col_info_name) KolString=kolnavn(kolnr) acol=str$(tabnavn+"."+kolnavn(kolnr)) 'Print acol+" acol" Print #1, KolString+ Space$(24-len(kolString))+aCol Run Program "Notepad "+ "C:\Byggesag\Byggesagsrapport.txt" slut: Print "Sagsrapport: "+ Error$() End Sub 'sagsrapport Sub Statusnotat Dim s_statusnotat as String OnError GoTo Hovsa If Selectioninfo(SEL_INFO_NROWS)=0 Then Note "Der er ikke Foretaget noget valg!"+chr$(13)+"vælg en sag fra Byggesagstabellen og tryk på knappen igen!" End if If Selectioninfo(SEL_INFO_TABLENAME) not like "%sage%"

Modul Byggesager GIS-Byggesag 14 af 48 Then Note "Du har ikke valgt sager fra en byggesagstabel!"+chr$(13)+"vælg sager, som skal afsluttes fra Byggesagstabellen og tryk på knappen igen!" End if Dialog Title "Skriv et statusnotat For byggesagen" Width 170 Height 60 Control EditText Width 160 Height 30 Into s_statusnotat Control OKButton Control CancelButton Title "Fortryd" If ( CommandInfo( CMD_INFO_DLG_OK)) Then Update Selection Set Statusnotat=s_Statusnotat Commit Table Byggesager Hovsa: Print "Statusnotat: "+Error$() Resume Next End Sub 'Statusnotat Sub AfslutSag OnError GoTo Hovsa If Selectioninfo(SEL_INFO_NROWS)=0 Then Note "Der er ikke Foretaget noget valg!"+chr$(13)+"vælg en sag fra Byggesagstabellen og tryk på knappen igen!" End if If Selectioninfo(SEL_INFO_TABLENAME) not like "%sage%" Then Note "Du har ikke valgt sager fra en byggesagstabel!"+chr$(13)+"vælg sager, som skal afsluttes fra Byggesagstabellen og tryk på knappen igen!" End if If Ask(chr$(13)+"Du er ved at afslutte "+Selectioninfo(SEL_INFO_NROWS)+" sag(er)."+chr$(13)+"sagen sættes til afsluttet, når sagsbehandlingen er færdig og afventer færdigmelding fra ansøgeren."+chr$(13)+"vil du Fortsætte?", "Ja", "Nej") Then Update Selectioninfo(SEL_INFO_SELNAME) Set Afsluttet=1, Afslutningsdato=CurDate() Commit Table Byggesager Hovsa: Print "AfslutSag: "+Error$() Resume Next End Sub'AfslutSag Sub FærdigmeldSag OnError GoTo Hovsa If Selectioninfo(SEL_INFO_NROWS)=0

Modul Byggesager GIS-Byggesag 15 af 48 Then Note "Der er ikke Foretaget noget valg!"+chr$(13)+"vælg en sag fra Byggesagstabellen og tryk på knappen igen!" End if If Selectioninfo(SEL_INFO_TABLENAME) not like "%sage%" Then Note "Du har ikke valgt sager fra en byggesagstabel!"+chr$(13)+"vælg sager, som skal afsluttes fra Byggesagstabellen og tryk på knappen igen!" End if If Ask(chr$(13)+"Du er ved at færdigmelde "+Selectioninfo(SEL_INFO_NROWS)+" sag(er)."+chr$(13)+"sagen færdigmeldes, når ansøgeren har meddelt, at byggeriet er færdigt."+chr$(13)+"vil du Fortsætte?", "Ja", "Nej") Then Update Selectioninfo(SEL_INFO_SELNAME) Set Færdigmeldt=1, Færdigmeldingsdato=CurDate() Commit Table Byggesager Call Main() Hovsa: Print "FærdigmeldSag: "+Error$() Resume Next End Sub 'FærdigmeldSag Sub Admin Browse * From Wordsti Browse * From Skabeloner Browse * From Brugere Browse * From Udvidelser Browse * From Bufferudvidelser Browse * From Dataliste End Sub Sub Help Run Program "hh.exe "+ ApplicationDirectory$()+"GIS-Byggesag.chm" End Sub Sub Afslut terminate application "Byg.mbx" End Sub Sub WinClosedHandler If CommandInfo( CMD_INFO_WIN )=gi_winid Then Note "Du har lukket kortvinduet!"+chr$(13)+ "Du kan genoptage byggesagsbehandlingen eller lukke programmet i menupunktet ""Byggesag""" End Sub Sub EndHandler() OnError GoTo Hovsa Close Table Skabeloner Interactive

Modul Byggesager GIS-Byggesag 16 af 48 Hovsa: Resume Next End Sub Close Table Brugere Interactive Close Table Dataliste Interactive Close Table Wordsti Interactive

Modul Byggesagsdato GIS-Byggesag 17 af 48 Include "mapbasic.def" Declare Sub Dato(datostreng as string) Declare Sub PickTheDate Lib "PickDate" (Byval posx as integer, Byval PosY as integer, Year as integer, Month as integer, Day as integer) Sub Dato(datostreng as string) Dim i_month, i_day,i_year As Integer call PickTheDate (300,300,i_Year,i_Month,i_Day) datostreng=i_year+""+format$( i_month, "00")+""+Format$( i_day, "00") End Sub

Modul Sag GIS-Byggesag 18 af 48 include "mapbasic.def" Include "menu.def" Declare sub Dialog (i_sagstype, i_sagbeh AS INTEGER, s_bygemne, s_statusnotat, s_sagind, s_bygnummer, s_ans, s_ans_adr, s_postdist AS STRING, l_egensag, l_word as logical) 'Declare Sub Fortryd Declare Sub ChkSag Global gs_brugere as String sub Dialog (i_sagstype, i_sagbeh AS INTEGER, s_bygemne, s_statusnotat, s_sagind, s_bygnummer, s_ans, s_ans_adr, s_postdist AS STRING, l_egensag, l_word as logical) DIALOG 'POSITION 305, 165 WIDTH 375 HEIGHT 250 TITLE "Sagsoplysninger" CONTROL GroupBox POSITION 14, 10 WIDTH 347 HEIGHT 110 TITLE "Sagsoplysninger" CONTROL RadioGroup POSITION 38, 20 ID 9001 TITLE "BR-S Tilladelsessag;BR-S Anmeldelsessag;BR Tilladelsessag;BR Anmeldelse, landbrug;br Anmeldelse, øvrige;godkendelsessag, øvrige;landzonesag" Det kunne jo egentlig godt være noget, som brugeren kunne tilpasse. Der må vi se Skal så også rettes i Toolhandler! VALUE 2 INTO i_sagstype CONTROL EditText POSITION 173, 38 WIDTH 180 HEIGHT 35 ID 9002 VALUE s_bygemne'"byggesagsemne" INTO s_bygemne CONTROL EditText POSITION 173, 78 WIDTH 180 HEIGHT 35 ID 9013 VALUE s_statusnotat'"statusnotat" INTO s_statusnotat CONTROL EditText POSITION 173, 20 WIDTH 180 'HEIGHT 15 ID 9003 VALUE s_bygnummer'"byggesagsnummer" INTO s_bygnummer

Modul Sag GIS-Byggesag 19 af 48 CONTROL GroupBox POSITION 14, 124 WIDTH 347 HEIGHT 30 TITLE "Sagsbehandler og oprettelsesdato" CONTROL Checkbox POSITION 38, 135 ID 9012 TITLE "Egen sag" INTO l_egensag CALLING ChkSag CONTROL PopUpMenu POSITION 120, 135 WIDTH 85 ID 9004 TITLE "Sagsbehandler;"+gs_brugere INTO i_sagbeh Disable CONTROL EditText POSITION 240, 135 WIDTH 65 'HEIGHT 15 ID 9011 VALUE s_sagind'curdate() INTO s_sagind CONTROL GroupBox POSITION 14, 158 WIDTH 347 HEIGHT 50 TITLE "Ansøger" CONTROL EditText POSITION 38, 170 WIDTH 120 HEIGHT 12 ID 9005 VALUE s_ans'"ejer" INTO s_ans CONTROL EditText POSITION 173, 170 WIDTH 180 HEIGHT 12 ID 9006 VALUE s_ans_adr'"ansøgers adresse" INTO s_ans_adr CONTROL EditText POSITION 173, 189 WIDTH 180 HEIGHT 12 ID 9007 VALUE s_postdist'"ansøgers postdistrikt" INTO s_postdist CONTROL CheckBox POSITION 38, 222 WIDTH 89 ID 9008

Modul Sag GIS-Byggesag 20 af 48 TITLE "Flet data til Word nu?" VALUE 0 INTO l_word CONTROL OKButton POSITION 239, 222 WIDTH 38 HEIGHT 14 ID 9009 TITLE "OK" CONTROL CancelButton POSITION 303, 222 WIDTH 38 HEIGHT 14 ID 9010 TITLE "Fortryd" end sub Sub ChkSag Print ReadControlvalue(9012) If ReadControlvalue(9012) Then Alter Control 9004 Disable Else Alter Control 9004 Enable End Sub

Modul Word GIS-Byggesag 21 af 48 Include "MENU.DEF" Include "MAPBASIC.DEF" Declare Sub Word Declare Sub Chkflet Declare Function DanListe$(ByVal TabelNavn as string, ByVal KolNavn as string) as string Global gs_wordsti, gs_arbsti As String Global gi_doknr As SmallInt Global gl_dblklik As Logical Global gi_winid as Integer Sub Word Dim sdokliste, s_kørfil As String Dim i_antaldokumenter As SmallInt OnError GoTo Hovsa Print gi_winid+" Vinduesnummer" 'Set Window gi_winid Front i_antaldokumenter = TableInfo(Skabeloner,TAB_INFO_NROWS) sdokliste = DanListe$("Skabeloner","Titel") gl_dblklik = False Dialog Title "Vælg flettedokumenter: " Calling Chkflet Control StaticText Position 10,10 Title "Dokumenttitler: (" + Str$(i_AntalDokumenter) + " mulige)" Control ListBox Position 15,20 Title sdokliste Calling Chkflet ID 1 Into gi_doknr Value gi_doknr height 140 width 125 Control StaticText Position 150,20 Title "Sti:" Control StaticText Position 155,30 Title "" ID 2 Width 160 Control StaticText Position 150,50 Title "Filnavn:" Control StaticText Position 155,60 Title "" ID 3 Width 160 Control StaticText Position 150,80 Title "Vælg fra følgende tabel:" Control StaticText Position 155,90 Title "" ID 7 Width 160 Control StaticText Position 150,110 Title "Beskrivelse:" Control StaticText Position 155,120 Title "" ID 4 Width 160 ' Control StaticText Position 155,130 Title "" ID 5 Width 160 ' Control StaticText Position 155,140 Title "" ID 6 Width 160 Control OKButton Title "Flet!" Control CancelButton If CommandInfo(CMD_INFO_DLG_OK) Or gl_dblklik Then Fetch Rec gi_doknr from Skabeloner 'Her kunne man gemme kortvinduet og sætte det ind i et dokument som en kæde, hvis brugeren vælger det. If Skabeloner.billedlink Then s_kørfil ="Save Window "+gi_winid+" as ""C:\Byggesag\Sagsbillede.jpg"" Type ""JPEG"" " Run Command s_kørfil End if s_kørfil = """"+gs_wordsti+""""+""""+ Skabeloner.Sti + "\" + Skabeloner.FilNavn+"""" FNF: If Err() = 844 Then OnError GoTo FNF Run Program s_kørfil OnError GoTo 0

Modul Word GIS-Byggesag 22 af 48 Note UCase$(s_KørFil) + chr$(13) + chr$(13) + "Er allerede åben - Luk den først." ElseIf Err() = 370 Then Note UCase$(s_KørFil) + chr$(13) + chr$(13) + "Ikke fundet - Kontakt den ansvarlige." Else Note "Fejl nummer: " + str$(err()) + chr$(13) + error$() + chr$(13) + "Kører " + UCase$(s_KørFil) + chr$(13) + "Kontakt den ansvarlige." Hovsa: Print str$(err())+" "+error$() End Sub Sub Chkflet If TriggerControl() = 1 Then If CommandInfo(CMD_INFO_DLG_DBL) Then gl_dblklik = True gi_doknr = ReadControlValue(1) Dialog Remove Fetch Rec ReadControlvalue(1) From Skabeloner Alter Control 2 Title Skabeloner.Sti Alter Control 3 Title Skabeloner.FilNavn Alter Control 4 Title Skabeloner.Beskrivelse1 ' ' End Sub Alter Control 5 Title Skabeloner.Beskrivelse2 Alter Control 6 Title Skabeloner.Beskrivelse3 If Skabeloner.Billedlink Then Alter Control 7 Title "Byggesager" Else Alter Control 7 Title "Ejer"

Modul ToolHandler GIS-Byggesag 23 af 48 Include "Mapbasic.def" Declare Sub Main Declare Sub Toolhandler Declare Sub Dato(sDato as string) Declare Sub Dialog (i_sagstype, i_sagbeh AS INTEGER, s_bygemne, s_statusnotat, s_sagind, s_bygnummer, s_ans, s_ans_adr, s_postdist AS STRING, l_egensag, l_word as logical) Declare Sub Opdater Declare Sub Send Declare Sub Sagsrapport Global gs_brugere, gs_brugernavn, gs_arbsti, gspict as String, gl_outltask as Logical, gi_winid as Integer Sub ToolHandler 'Sætter punktet Dim i_row as smallint', x,y as float OnError goto Fejl Set Map Layer Byggesager Display Global Editable on Create point (CommandInfo(CMD_INFO_X),CommandInfo(CMD_INFO_Y)) Symbol ( 46, BLUE, 12) Set Map Layer Byggesager Display Off Editable Off Run Menu Command 1701 'Vælg i_row=tableinfo(byggesager, TAB_INFO_NROWS) Select * from byggesager where rowid=i_row INTO ByggesagTmp Call Opdater Fejl: Print "Fejl i: Toolhandler -"+chr$(13)+error$()+chr$(13)+"byggesagen er ikke oprettet!" End Sub 'ToolHandler Sub Opdater 'Opdaterer byggesagstabellen DIM i as Smallint, i_sagstype, i_sagbeh AS INTEGER, i_row as smallint, i_ejdnr as Float, s_bygemne, s_statusnotat, s_sagind, s_bygnummer, s_ans, s_ans_adr, s_postdist, ssagbeh, smailadr, srunstring, sbuffertekst, sdato AS STRING, a_bygemne, a_statusnotat, a_sagind, a_bygnummer, a_ans, a_ans_adr, a_postdist, abufalias as Alias, lopgave, laftale, l_egensag, l_word as logical, obufobj as Object OnError GoTo Fejl Select * from Selection INTO ByggesagTmp If SelectionInfo(SEL_INFO_NROWS)=0 Then Note "Der er ikke foretaget noget valg!"+chr$(13)+"vælg en sag fra Byggesagstabellen og tryk på knappen igen!" If SelectionInfo(SEL_INFO_TABLENAME) not like "%sage%" Then Note "Du har ikke valgt sager fra en byggesagstabel!"+chr$(13)+"vælg sager, som skal afsluttes fra Byggesagstabellen og tryk på knappen igen!"

Modul ToolHandler GIS-Byggesag 24 af 48 Call Dato(sDato) If not Val(sDato)>0 then print "Du har fortrudt oprettelse af den aktuelle byggesag!" Rollback Table Byggesager Update ByggesagTmp Set Huskedato = sdato Update ByggesagTmp Set Datotekst = Day(Huskedato)+"/"+Month(Huskedato)+" "+Year(Huskedato) Commit table Byggesager If TableInfo(ByggesagTmp,TAB_INFO_NROWS)>1 Then Note "Du har opdateret datoen på flere sager. Outlook kan ikke håndtere flere sagsopdateringer ad gangen! Du bliver nødt til at gemme påmindelsen manuelt i Outlook!" Else Så skal vi hele møllen igennem. kommer først til slut a_bygemne=byggesagtmp.emne If a_bygemne<>"" then s_bygemne=a_bygemne else s_bygemne="byggesagsemne" end If a_statusnotat=byggesagtmp.statusnotat If a_statusnotat<>"" Then s_statusnotat=a_statusnotat else s_statusnotat="statusnotat" end If a_sagind=byggesagtmp.sag_indgået If a_sagind<>"" Then s_sagind=a_sagind else s_sagind=curdate() end If a_bygnummer=byggesagtmp.byggesagsnummer If a_bygnummer<>"" Then s_bygnummer=a_bygnummer else s_bygnummer="byggesagsnummer" end If a_ans=byggesagtmp.ansøger If a_ans<>"" Then s_ans=a_ans else s_ans="ejer" end If a_ans_adr=byggesagtmp.ansøger_adresse If a_ans_adr<>"" Then s_ans_adr=a_ans_adr else s_ans_adr="ansøgers adresse" end If

Modul ToolHandler GIS-Byggesag 25 af 48 a_postdist=byggesagtmp.postnr_ansøger If a_postdist<>"" Then s_postdist=a_postdist else s_postdist="ansøgers postdistrikt" end If Call Dialog (i_sagstype,i_sagbeh, s_bygemne, s_statusnotat, s_sagind, s_bygnummer, s_ans, s_ans_adr, s_postdist, l_egensag, l_word) '(Indtastning af data) If not then end If CommandInfo( CMD_INFO_DLG_OK) Rollback Table Byggesager exit Sub Do Case Case 1 Case 2 Case 3 Case 4 Case 5 Case 6 Case 7 End Case i_sagstype Update ByggesagTmp Set Sagstype="BR-S Tilladelsessag (BR98)" Update ByggesagTmp Set Sagstype="BR-S Anmeldelsessag" Update ByggesagTmp Set Sagstype="BR Tilladelsessag" Update ByggesagTmp Set Sagstype="BR Anmeldelse, landbrug" Update ByggesagTmp Set Sagstype="BR Anmeldelse, øvrige" Update ByggesagTmp Set Sagstype="Godkendelsessag, øvrige" Update ByggesagTmp Set Sagstype="Landzonesag" If not l_egensag Then Else Fetch rec i_sagbeh-1 from Brugere ssagbeh = Brugere.navn smailadr = Brugere.Mailadresse print "Sagen overføres til: "+ssagbeh ssagbeh=gs_brugernavn Update ByggesagTmp Set Sagsbehandler=sSagbeh Update ByggesagTmp Set Emne=s_bygemne Update ByggesagTmp Set Statusnotat=s_Statusnotat Update ByggesagTmp Set Byggesagsnummer=s_bygnummer Update ByggesagTmp Set Sag_indgået=s_sagind Update ByggesagTmp Set Ansøger=s_ans Update ByggesagTmp Set Ansøger_adresse=s_ans_adr Update ByggesagTmp Set Postnr_ansøger=s_postdist 'Tabeller: 'Det er svært at undgå matrikeltabellen... hårdtkodet dermed... Add Column "ByggesagTmp" (Ejendomsnummer )

Modul ToolHandler GIS-Byggesag 26 af 48 From Mat_reg Set To Ejd_nr Where Contains Add Column "ByggesagTmp" (Matrikelnummer ) From Mat_reg Set To MAS_MATRNR Where Contains Add Column "ByggesagTmp" (Ejerlaug ) From Mat_reg Set To ELAVNAVN Where Contains ''ejertabellen er også ret central-> hårdtkodet... Her fundet i kortet kunne også være opslag på ejd.nr Add Column "ByggesagTmp" (Ejers_navn1 ) From Ejere Set To Ejers_navn Where Contains Add Column "ByggesagTmp" (Ejers_adresse ) From Ejere Set To Ejers_adresse Where Contains Add Column "ByggesagTmp" (Postnr_ejer ) From Ejere Set To Postdistrikt Where Contains i_ejdnr=byggesagtmp.ejendomsnummer Select Ejere.Ejers_navn, Byggesager.Ejers_navn1 from Byggesager, Ejere where Ejere.Ejendomsnummer = Byggesager.Ejendomsnummer and ejere.ejendomsnummer=i_ejdnr and Ejere.Ejerandel tæller>0 group by Byggesager.Ejers_navn1 into navne noselect Add Column "ByggesagTmp" (Ejers_navn2 ) From navne Set To Ejers_navn Where COL13 = COL2 'ESR er måske mere tvivlsom. Den er vigtig for at finde adressen... 'Hvis man brugte Contains vha ejd.nr. i matrikeltab. ville man kunne få mange adresser ved søgning i adressetabellen Add Column "ByggesagTmp" (Beliggenhed ) From Esr Set To Beliggenhed Where ejendomsnummer=ejendomsnummer 'Udvidelser: Fetch First from Udvidelser 'Runtime-tilføjelse: Do While Not EOT(Udvidelser) srunstring="add Column ""ByggesagTmp"" ("+Udvidelser.Felt_byggesagstabel+") "+

Modul ToolHandler GIS-Byggesag 27 af 48 Loop "From "+Udvidelser.Tabel+" Set To "+Udvidelser.Felt+ " Where Contains " Run Command srunstring Fetch Next from Udvidelser 'Bufferudvidelser - Runtime-tilføjelse: Create Table "BufObj" (Tmp Logical) file "C:\Byggesag\BufObj.tab" TYPE NATIVE CharSet "WindowsLatin1" 'Det er noedloesningen, hvor meget jeg end har proevet med obufobj, virker det ikke :^( Dog fin performance :-) Create Map For BufObj Fetch First from Bufferudvidelser Do While Not EOT(Bufferudvidelser) i=bufferudvidelser.bufferafstand print i+" m: Bufferafstand til objekter i laget: "+Bufferudvidelser.Tabel Create Object As Buffer From ByggesagTmp Into Table BufObj Width i Units "m" srunstring="select "+ Bufferudvidelser.Felt+" From "+Bufferudvidelser.Tabel+" Where obj Intersects (Select obj from BufObj) Into BufferTmp NoSelect" Run Command srunstring If TableInfo(BufferTmp,TAB_INFO_NROWS)>0 Then Fetch First From BufferTmp sbuffertekst=buffertmp.col1 srunstring="update ByggesagTmp Set "+Bufferudvidelser.FeltByggesagstabel+"="+""""+sBuffertekst+"""" 'print "BufferRunstring: "+srunstring Run Command srunstring Rollback Table BufObj Fetch Next from Bufferudvidelser Loop Commit table Byggesager Drop table BufObj Close table BufferTmp Close table Navne Save Workspace As "C:\Byggesag\Dobbeltklik For At Vise Sagen.wor" ' Kunne også være ApplicationDirectory$() Dette sætter dog relative stier på centrale byggesagsfiler. Fungerer dermed skidt ved åbning fra Outlook! srunstring="save Window "+gi_winid+" as ""C:\Byggesag\Sagsbillede.jpg"" Type ""JPEG"" " ' Billede af kortet gemmes ved sagsoprettelsen Run Command srunstring gspict="c:\byggesag\sagsbillede.jpg" If end If l_word then Call send print "Fletter nu til word"

Modul ToolHandler GIS-Byggesag 28 af 48 Open File "C:\Byggesag\OutlookData.txt" For Output As #1 CharSet "WindowsLatin1" Til Outlookintegrationen If SystemInfo(SYS_INFO_RUNTIME) Then 'Så kan man ikke køre et arbejdsområde direkte, der gemmes ikke attachment If gl_outltask Then 'Byggesagen oprettes som en opgave (task) If l_egensag Then 'Sagsbehandlerens egen sag Print #1, "TaskEgenBgs" Print #1, FormatDate$ (sdato) Print #1, "Byggesag: "+ByggesagTmp.beliggenhed Print #1, "Emne: "+s_bygemne Print #1, gspict Print #1, "Statusnotat: "+s_statusnotat Else 'Sagen overføres til en kollega Print #1, "TaskKollegaBgs" Print #1, FormatDate$ (sdato) Print #1, "Byggesag: "+ByggesagTmp.beliggenhed Print #1, "Emne: "+s_bygemne Print #1, smailadr Print #1, gspict Print #1, "Statusnotat: "+s_statusnotat Else 'Byggesagen oprettes som en aftale (appointment) If l_egensag Then 'Sagsbehandlerens egen sag Print #1, "EgenBgs" Print #1, FormatDate$ (sdato) Print #1, "Byggesag: "+ByggesagTmp.beliggenhed Print #1, "Emne: "+s_bygemne Print #1, gspict Print #1, "Statusnotat: "+s_statusnotat Else 'Sagen overføres til en kollega Print #1, "KollegaBgs" Print #1, FormatDate$ (sdato) Print #1, "Byggesag: "+ByggesagTmp.beliggenhed Print #1, "Emne: "+s_bygemne Print #1, smailadr Print #1, gspict Print #1, "Statusnotat: "+s_statusnotat Else ' MI Pro, der gemmes et arbejdsområde If gl_outltask Then 'Byggesagen oprettes som en opgave (task) If l_egensag Then 'Sagsbehandlerens egen sag Print #1, "TaskEgenBgsAttach" Print #1, FormatDate$ (sdato) Print #1, "Byggesag: "+ByggesagTmp.beliggenhed Print #1, "Emne: "+s_bygemne Print #1, "C:\Byggesag\Dobbeltklik For At Vise Sagen.wor" Print #1, gspict Print #1, "Statusnotat: "+s_statusnotat Else 'Sagen overføres til en kollega Print #1, "TaskKollegaBgsAttach" Print #1, FormatDate$ (sdato) Print #1, "Byggesag: "+ByggesagTmp.beliggenhed Print #1, "Emne: "+s_bygemne Print #1, smailadr Print #1, "C:\Byggesag\Dobbeltklik For At Vise Sagen.wor"

Modul ToolHandler GIS-Byggesag 29 af 48 Else Close File #1 Print #1, gspict Print #1, "Statusnotat: "+s_statusnotat 'Byggesagen oprettes som en aftale (appointment) If l_egensag Then 'Sagsbehandlerens egen sag Print #1, "EgenBgsAttach" Print #1, FormatDate$ (sdato) Print #1, "Byggesag: "+ByggesagTmp.beliggenhed Print #1, "Emne: "+s_bygemne Print #1, "C:\Byggesag\Dobbeltklik For At Vise Sagen.wor" Print #1, gspict Print #1, "Statusnotat: "+s_statusnotat Else 'Sagen overføres til en kollega Print #1, "KollegaBgsAttach" Print #1, FormatDate$ (sdato) Print #1, "Byggesag: "+ByggesagTmp.beliggenhed Print #1, "Emne: "+s_bygemne Print #1, smailadr Print #1, "C:\Byggesag\Dobbeltklik For At Vise Sagen.wor" Print #1, gspict Print #1, "Statusnotat: "+s_statusnotat Select * From ByggesagTmp Call sagsrapport 'Byg.mbx skal køres vha arb.omr: Open File "C:\Byggesag\Dobbeltklik For At Vise Sagen.wor" For Append As #1 CharSet "WindowsLatin1" Print #1, "Run Application "+ """"+ApplicationDirectory$()+"Byg.mbx""" Close File #1 'Grunden til at denne kode kommer senere end "Save Workspace" er, at MI skal naa at gemme arbejdsomraadet faerdigt - gaelder isaer langsomme pc'er (nu kan Mapbasic altsaa ikke skrive danske bogstaver mere!?) Run Program ApplicationDirectory$()+"Outlook\OutlookInt.exe "+"C:\Byggesag\OutlookData.txt" Ganske enkelt, hva? ;-) Metoden kan i øvrigt vendes, så vi kan læse fra Outlook. Den venter 'Print "Husk, at Outlookintegrationen er midlertidigt udkommenteret!!! Det samme gælder sagsrapporten" '...der er flere sager, som opdateres...pyha Call Main() Altid før fejlhåndtering Fejl: Print "Fejl i Opdateringsrutinen:"+chr$(13)+Error$()+chr$(13) Resume Next 'SlemFejl: Lad os nu se, om vi ikke kan klare os uden 'Note Error$()+chr$(13)+"Du kan ikke oprette en sag, før den anden bruger har gemt byggesagstabellen!" End Sub 'Opdater

Modul Lagkontrol GIS-Byggesag 30 af 48 Include "Mapbasic.def" Include "Icons.def" Declare Sub Lagkontrol Declare Sub Tsluk Global gi_dataliste, g_i as Smallint, gl_check(), gl_btnpad as Logical, gs_arbsti as String Sub Lagkontrol Dim s_hjlp, s_ikon as String, i_ikon as Smallint Onerror GoTo Fejl 'Tabelliste til lagkontrollen dannes: Select * From Dataliste Where Lagkontrol=1 Into Dataliste_lagkontrol noselect If gi_dataliste<>tableinfo(dataliste_lagkontrol, TAB_INFO_NROWS ) Then gi_dataliste=tableinfo(dataliste_lagkontrol, TAB_INFO_NROWS ) Redim gl_check(gi_dataliste+102) Create ButtonPad "TSluk" As ToggleButton ID 101 Icon 115 File gs_arbsti + "\Byggesag.dll" Calling TSluk HelpMsg "Tænd og sluk for egne byggesager\ntænd og sluk for egne byggesager" Check ToggleButton ID 102 Icon 117 File gs_arbsti + "\Byggesag.dll" Calling TSluk HelpMsg "Tænd og sluk for alle byggesager\ntænd og sluk for alle byggesager" UNCheck Title "TSluk" 'Width 2 ToolbarPosition (2,1) Show Fixed gl_check(101)=1 gl_check(102)=0 For g_i =1 to gi_dataliste Fetch rec g_i from Dataliste_lagkontrol 'Indeholder kun knapper til lag, der er med i lagkontrollen s_hjlp=dataliste_lagkontrol.hjælpetekst i_ikon=dataliste_lagkontrol.ikon s_ikon=dataliste_lagkontrol.specialikon gl_check(g_i)=dataliste_lagkontrol.vises If gl_check(g_i) Then

Modul Lagkontrol GIS-Byggesag 31 af 48 If s_ikon Then s_ikon="alter ButtonPad ""TSluk"" Add ToggleButton ID "+ g_i+" "+s_ikon+" HelpMsg """+ s_hjlp+"\n"+s_hjlp+""" Calling TSluk Check " 'print s_ikon Run Command s_ikon Else Alter ButtonPad "TSluk" Add ToggleButton ID g_i Icon i_ikon HelpMsg s_hjlp+"\n"+s_hjlp Calling TSluk Check Else If s_ikon Then s_ikon="alter ButtonPad ""TSluk"" Add ToggleButton ID "+ g_i+" "+s_ikon+" HelpMsg """+ s_hjlp+"\n"+s_hjlp+""" Calling TSluk UNCheck " Next Else Run Command s_ikon Alter ButtonPad "TSluk" Add ToggleButton ID g_i Icon i_ikon HelpMsg s_hjlp+"\n"+s_hjlp Calling TSluk UnCheck gl_btnpad=1 'Buttonpads er nu defineret Fejl: Print "Lagkontrol:"+chr$(13)+Error$() Resume Next End Sub 'Lagkontrol Sub TSluk Dim i as Smallint, s_lag as String Onerror goto fejl i=commandinfo( CMD_INFO_TOOLBTN) If i<100 Then ElseIf i=101 Then s_lag="egne_sager" ElseIf i=102 Then s_lag="alle_sager" Fetch rec i from Dataliste_lagkontrol s_lag=dataliste_lagkontrol.dataalias

Modul Lagkontrol GIS-Byggesag 32 af 48 If gl_check(i)=true Then Set Map Layer s_lag display off Alter Button id i uncheck gl_check(i)=false Else Set Map Layer s_lag display Global Alter Button id i Check gl_check(i)=true Exit sub fejl: Print "TSluk: "+chr$(13)+error$() end sub 'TSluk

Modul Nabohøring GIS-Byggesag 33 af 48 Include "Mapbasic.def" Declare Sub Ejerflet Declare Sub TegnPolygon Declare Sub VælgPolygon Declare Sub Word Declare Function ErTabelÅben(ByVal Tabelnavn as String) as Logical Declare Function DanLagListe(ByVal WinID as Integer) As String Global gl_valgok, gl_ejervalgok as Logical, gs_flettesag, gslagorden, gslagordenpoly as String, giwinid as Integer Sub Ejerflet Lidt kompliceret, da den samme knap skal bruges tre gange. (En nabohøringsfunktion kan man da ikke have tre knapper til, vel?) Styret af de to logiske globale variable (se globals). Muligvis volder polygonvalget med eksisterende polygoner problemer, hvis brugeren har overlappende polygoner. Så vælges et objekt fra samme lag. Der kan endvidere være et problem, hvis brugeren giver op på halvvejen og senere vender tilbage. Så husker programmet, at man har gennemløbet en eller flere af funktionerne. Det er desværre et Catch 22, hvis man skal undgå tre knapper Dim i_fletinto,i,ikolnr, nkol as Smallint, acol as alias, KOLn, tabnavn, kolnavn(), KolString as String Onerror goto slut If not gl_valgok Then gslagorden="" gslagordenpoly="" If Selectioninfo(SEL_INFO_TABLENAME)not like "%sag%" Then Note "Der er ikke foretaget valg fra Byggesagstabellen!"+chr$(13)+"Vælg én sag fra Byggesagstabellen og tryk på knappen igen!" ElseIf Selectioninfo(SEL_INFO_NROWS)<>1 Then Note "Du kan kun vælge at foretage høring af én sag!"+chr$(13) +"Vælg én sag fra Byggesagstabellen og tryk på knappen igen!" Else gl_valgok=true Commit Table Selectioninfo(SEL_INFO_SELNAME) As "C:\Byggesag\Temp.TAB" TYPE NATIVE Charset "WindowsLatin1" Open Table "C:\Byggesag\Temp.TAB" Update Temp Set Obj = buffer(obj,30,30,"km")'der bruges en buffer til at joine byggesagen med ejere. Bufferen er 30 km! gl_valgok=true for i = 1 to NumWindows() If WindowInfo(WindowID(i), WIN_INFO_TYPE) = WIN_MAPPER Then giwinid=windowid(i)

Modul Nabohøring GIS-Byggesag 34 af 48 next End if Set Window giwinid Front Exit For For i=1 to MapperInfo(giWinid,MAPPER_INFO_LAYERS) If i>1 Then gslagorden=gslagorden+i+"," Next If LayerInfo(giWinid, i, LAYER_INFO_NAME)="Ejere" Then Print "Ejere har lag nummer "+i gslagorden="set Map Order "+gslagorden+"1" Exit For end if If Not SelectionInfo(SEL_INFO_TABLENAME)="Ejere" Tjae, så er vi endnu ikke nået så langt Then DIALOG POSITION 363, 231 TITLE "Angiv metode til ejerflet" CONTROL RadioGroup POSITION 24, 9 TITLE "Udpeg ejere med musen;vælg ejere ved at tegne en polygon;vælg ejere med en polygon fra et andet lag" VALUE 1 INTO i_fletinto CONTROL OKButton POSITION 43, 54 WIDTH 37 HEIGHT 15 CONTROL CancelButton POSITION 107, 54 WIDTH 37 HEIGHT 15 TITLE "Fortryd" If not CommandInfo( CMD_INFO_DLG_OK) Then gl_valgok=0 ' Dermed skal der startes forfra... Print "Fortryd" Set Map order Ejere Skal være øverst; eller næstøverst ved polygonvalg Do Case i_fletinto Case 1 Run Menu Command 1701 Case 2 Call TegnPolygon Case 3

Modul Nabohøring GIS-Byggesag 35 af 48 Call VælgPolygon End Case 'Så kommer vi tilbage fra ejervalget... If SelectionInfo(SEL_INFO_TABLENAME)="Ejere" Then gl_ejervalgok=true If gl_ejervalgok Then Run Command gslagorden If gslagordenpoly<>"" Then 'Print "Ny lagorden: "+gslagordenpoly Run Command gslagordenpoly End if Select * from Ejere, Temp Where Temp.obj Contains Ejere.Obj and Ejere.Ejendomsnummer in(select Ejendomsnummer From Selectioninfo(SEL_INFO_SELNAME)) Into Naboflet Group by Ejers_navn Noselect Tabnavn = Naboflet nkol = tableinfo(tabnavn,tab_info_ncols) redim kolnavn(nkol) For ikolnr = 1 to nkol KOLn ="COL"+ ikolnr kolnavn(ikolnr)= columninfo(tabnavn,koln,col_info_name) KolString=KolString+kolnavn(iKolnr)+";" Next OnError goto Wordfejl Open File "C:\Byggesag\Naboflet.txt" For Output As #1 CharSet "WindowsLatin1" Print #1, KolString 'Kolonneoverskrifter er nu dannet Fetch First From tabnavn Do While Not EOT(tabnavn) KolString="" for ikolnr =1 to nkol acol =Str$(tabnavn+"."+kolnavn(iKolnr)) KolString=KolString+aCol+";" next Print #1,KolString ' Hver række skrives her til filen Fetch Next From tabnavn Loop Close File #1 Drop Table Temp Run Menu Command 1701'Almindelig cursor gl_valgok=false gl_ejervalgok = FALSE

Modul Nabohøring GIS-Byggesag 36 af 48 Call Word Slut: gl_valgok=false gl_ejervalgok = FALSE Print Error$() Note Der er sket en ukendt fejl. Du bør begynde forfra med Nabohøringsrutinen! Resume Next Wordfejl: Note Error$()+" Der er problemer med flettefilen eller Word. Luk evt. Word og start programmet igen." End sub 'Ejerflet Sub TegnPolygon Run Menu Command 1733 Tegn-en-polygon-valg End Sub Sub VælgPolygon Dim slagliste, slagnavn as String, ilagnr,i as Smallint OnError GoTo Hovsa If Not FrontWindow() Then Note "Du skal have et vindue åbent." ElseIf WindowInfo(FrontWindow(),WIN_INFO_TYPE) <> WIN_MAPPER Then Note "Det forreste vindue skal være et kortvindue." slagliste = DanLagListe(giWinId) If slagliste = "" Then Note "Alle tabeller er blevet lukket"+chr$(13)+ "Gå i byggesagsmenuen og klik på ""Til start""" Dialog Title "Vælg polygonlaget" Control StaticText Position 8,12 Title "Vælg en tabel:" Control ListBox Position 8,24 ID 1 Title slagliste Value 1 Height 60 Width 100 into ilagnr Control OKButton Title "&OK" ' Control CancelButton Title "&Fortryd" If CommandInfo(CMD_INFO_DLG_OK) Then slagnavn=layerinfo(frontwindow(), ilagnr-1, LAYER_INFO_NAME) Set Map Order slagnavn Set Map Layer slagnavn Display Global Run Menu Command 1704'Polygonvalg For i=2 to ilagnr-1 gslagordenpoly=gslagordenpoly+i+"," Next

Modul Nabohøring GIS-Byggesag 37 af 48 gslagordenpoly="set Map Order "+gslagordenpoly+"1" Hovsa: Print Error$() End Sub

Modul Functions GIS-Byggesag 38 af 48 Include "Mapbasic.def" Declare Function GetUserName lib "advapi32.dll" alias "GetUserNameA" (lpbuffer as string, nsize as integer) as integer Declare Function user_name_is() as string Declare Function ErTabelÅben(ByVal Tabelnavn as String) as Logical Declare Function DanListe$(ByVal TabelNavn as string, ByVal KolNavn as string) as string Declare Function DanLagListe(ByVal WinID as Integer) As String Function user_name_is() as string ' Få brugernavnet fra windows api dim BuffSize, x as integer, user_str, lpbuffer as string BuffSize = 1024 lpbuffer = string$(buffsize, chr$(32)) onerror goto Hovsa x = GetUserName(lpBuffer, BuffSize) user_name_is = lpbuffer exit function Hovsa: user_name_is = "Ukendt" end function 'user_name_is Function ErTabelÅben(ByVal Tabelnavn as String) as Logical Dim n As Integer ErTabelÅben = True OnError Goto Hovsa n = TableInfo(Tabelnavn, TAB_INFO_NROWS) 'print n+" n" Exit Function Hovsa: ErTabelÅben = False Exit Function End Function 'ErTabelÅben Function DanListe$(ByVal Tabelnavn as string, ByVal KolNavn as string) as string Dim akol as Alias Dim stempliste as String If TableInfo(Tabelnavn,TAB_INFO_NROWS) = 0 Then DanListe$ = "" Else akol = Tabelnavn+"."+KolNavn Fetch First From Tabelnavn stempliste = akol Fetch Next From Tabelnavn

Modul Functions GIS-Byggesag 39 af 48 While Not EOT(Tabelnavn) stempliste = stempliste+";"+akol Fetch Next From Tabelnavn Wend DanListe$ = stempliste End Function 'DanListe$ Function DanLagListe(ByVal WinID as Integer) As String Dim i, iantallag As SmallInt Dim slagnavn, slagliste As String If WinID <> 0 Then iantallag = MapperInfo(WinID,MAPPER_INFO_LAYERS) For i = 1 to iantallag slagnavn = layerinfo(winid,i,layer_info_name) If slagnavn <> "" Then slagliste = slagliste + ";" + slagnavn Next DanLagListe = slagliste End Function

Modul Om GIS-Byggesag 40 af 48 Declare Sub Om Sub Om Dim sappnavn, svernum, s_verdato As String Dim istrlen As SmallInt sappnavn = "GIS - Byggesag" svernum = "1.1" s_verdato = "Maj 2003" If Len(sAppNavn) < 30 Then istrlen = 156 Else istrlen = Len(sAppNavn) * 5 Dialog Title "Om GIS-Byggesag" Control GroupBox Position 8,8 Width istrlen Height 16 Control StaticText Position 12,14 Title sappnavn + " Version " + svernum Control StaticText Position 8,40 Title "Dette program er beregnet til at støtte " Control StaticText Position 8,48 Title "byggesagsbehandlingen." Control StaticText Position 8,60 Title "Programmet er udviklet af" Control StaticText Position 8,68 Title "Nykøbing F., Køge og Stevns kommuner " Control StaticText Position 8,76 Title s_verdato Control StaticText Position 8,86 Title "Programmet er freeware." Control OKButton End Sub ' Om

Visual Basic GIS-Byggesag 41 af 48 Attribute VB_Name = "Module1" Option Explicit Dim objbgs As Object Sub Main() Dim CmdParam As String Dim Param1 As String Dim Param2 As String Dim Param3 As String Dim Param4 As String Dim Param5 As String Dim Param6 As String Dim Param7 As String Dim Param8 As String On Error Resume Next CmdParam = Command() If Dir(CmdParam) = "" Then MsgBox "Filen " & CmdParam & " ikke fundet", vbokonly + vbcritical, "Fejl" End Open CmdParam For Input As #1 Input #1, Param1 Input #1, Param2 Input #1, Param3 Input #1, Param4 Input #1, Param5 Input #1, Param6 Input #1, Param7 Input #1, Param8 Close #1 Select Case UCase(Param1) Case "EGENBGS" EgenBgs Param2, Param3, Param4, Param5, Param6 Case "EGENBGSATTACH" EgenBgsAttach Param2, Param3, Param4, Param5, Param6, Param7 Case "KOLLEGABGS" KollegaBgs Param2, Param3, Param4, Param5, Param6, Param7 Case "KOLLEGABGSATTACH" KollegaBgsAttach Param2, Param3, Param4, Param5, Param6, Param7, Param8 Case "TASKEGENBGS" TaskEgenBgs Param2, Param3, Param4, Param5, Param6 Case "TASKEGENBGSATTACH" TaskEgenBgsAttach Param2, Param3, Param4, Param5, Param6, Param7 Case "TASKKOLLEGABGS" TaskKollegaBgs Param2, Param3, Param4, Param5, Param6, Param7 Case "TASKKOLLEGABGSATTACH" TaskKollegaBgsAttach Param2, Param3, Param4, Param5, Param6, Param7, Param8 End Select End End Sub Function EgenBgs(dDato As String, semne As String, sbody As String, spict As String, sstatusnotat As String) 'Appointment Outlook-integration OutlookInt.bas

Visual Basic GIS-Byggesag 42 af 48 On Error GoTo ErrOut If Not IsDate(dDato) Then MsgBox ddato & " er ikke en dato" Exit Function Set objbgs = CreateObject("Outlook.Application") With objbgs.createitem(olappointmentitem).subject = semne.body = sbody & Chr(10) & sstatusnotat & Chr(10).Start = Format(dDato, "yyyy-mm-dd").busystatus = 0.AllDayEvent = True.Attachments.Add (spict).save End With Exit Function ErrOut: MsgBox Err.Description, vbokonly + vbcritical, "Fejl i EgenBgs" End Function '******************* Function KollegaBgs(dDato As String, semne As String, sbody As String, smailaddr As String, spict As String, sstatusnotat As String) 'Appointment On Error GoTo ErrOut If Not IsDate(dDato) Then MsgBox ddato & " er ikke en dato" Exit Function Set objbgs = CreateObject("Outlook.Application") With objbgs.createitem(olappointmentitem).subject = semne.body = sbody & Chr(10) & sstatusnotat & Chr(10).Start = Format(dDato, "yyyy-mm-dd").busystatus = 0.AllDayEvent = True.MeetingStatus = 1.Recipients.Add (smailaddr).attachments.add (spict).send End With Exit Function ErrOut: MsgBox Err.Description, vbokonly + vbcritical, "Fejl i KollegaBgs" End Function '********************* Function EgenBgsAttach(dDato As String, semne As String, sbody As String, sattach As String, spict As String, sstatusnotat As String) 'Appointment On Error GoTo ErrOut Outlook-integration OutlookInt.bas