• Keine Ergebnisse gefunden

1. Aufgabe Erstellen Sie ein Script im Tabellenmodus mittels eines Schalters. Als Aufgabe soll eine laufende Nummerierung in ein Feld eingetragen werden Hinweise:

N/A
N/A
Protected

Academic year: 2021

Aktie "1. Aufgabe Erstellen Sie ein Script im Tabellenmodus mittels eines Schalters. Als Aufgabe soll eine laufende Nummerierung in ein Feld eingetragen werden Hinweise:"

Copied!
1
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Hochschule Harz FB Automatisierung und Informatik

3. Übung Programmierung in ArcView

1. Aufgabe

Erstellen Sie ein Script im Tabellenmodus mittels eines Schalters. Als Aufgabe soll eine laufende Nummerierung in ein Feld eingetragen werden

Hinweise:

1) Die Bezeichnung soll mittels Inputbox eingelesen werden.

2) Mit folgenden Anweisungen kann die „Tabelle“ addressiert werden.

theTable = av.GetActiveDoc // aktuelle Dokument, die Tabelle theVTab = theTable.GetVTab // Zugriff auf die Spalten

theTable.StopEditing 3) Methoden der Klasse VTab

 findfield

4) Anlegen eines Feldes theVTab.setEditable(true)

feld = Field.Make(sNr, #FIELD_DECIMAL, 16, 0) feld.SetVisible( TRUE )

theVTab.AddFields({feld})

5) Setzen eines Wertes (Zelle) in der Tabelle theVTab.SetValue(myfield, aRec, 44)

(2)

2. Aufgabe

Erstellen Sie ein Script im Tabellenmodus mittels eines Schalters. Als Aufgabe soll eine Zufallszahl in ein Feld eingetragen werden. Dabei soll das Feld mittels einer Liste ausgewählt werden. Es können natürlich nur numerische Felder verwendet werden.

Hinweise:

1) Der Maximalwert soll mittels Inputbox eingelesen werden.

Dabei soll aber eine Überprüfung auf einen gültigen numerischen Wert stattfinden. Die Klasse

„Number“ liefert dazu Ihnen Informationen.

2) Das Feld soll mittels Liste ausgewählt werden.

Dabei können natürlich nur numerische Felder angezeigt werden. Falls kein Feld existiert, soll eine Fehlermeldung angezeigt werden.

3) Berechnung

Folgende Anweisungen erlaubt den Zugriff auf die Markierungen.

theBitMap = theVTab.GetSelection theBitmap.clearAll

expr = "( 123)"

MsgBox.Info(expr,"expr")

theVTab.Calculate(expr, myFeld4711) theVTab.UpdateSelection

(3)

3. Aufgabe

Erstellen Sie ein Script im Tabellenmodus mittels eines Schalters. Als Aufgabe soll das Script aus einem Feld einen Teilstring ausschneidet und in einem anderen Feld eintragen.

Vorgehensweise:

 Auswählen des Quellfeldes (Nur Charakterfelder)

 Auswählen des Zielfeldes (Nur Charakterfelder, aber ohne Quellfeld)

 Eingabe der beiden Positionen mittels einer MultiInput-Eingabe (siehe Seite 25)

 Query programmieren Ablauf:

Tabelle mit zwei zusätzlichen Spalten

(4)

Aufruf des Scriptes, Auswahl des Quellfeldes

Auswahl des Zielfeldes

Bereich bestimmen

Ausdruck in der Query

Ergebnis

(5)

Hinweise:

1) Sie müssen erst die zwei Felder anlegen und mit Werten füllen.

Oder das Shape von meiner Homepage laden.

2) Verwenden Sie die Methode Number.Middle

(6)

Lösungen

'Aufgabe1 sNr="Nr"

sNr = MsgBox.Input ( "Eingabe des Feldnamens","Laufende Nummer eintragen", sNr) if (sNr=nil) then

exit end

theTable = av.GetActiveDoc theVTab = theTable.GetVTab

theTable.StopEditing

feldsNr = theVtab.FindField(sNr) if (feldsNr=nil) then

theVTab.setEditable(true)

feld = Field.Make(sNr, #FIELD_DECIMAL, 16, 0) feld.SetVisible( TRUE )

theVTab.AddFields({feld}) feldsNr = theVtab.FindField(sNr) end

theVTab.setEditable(true)

theBitMap = theVTab.GetSelection theBitmap.clearAll

i=0

for each rec in theVtab i=i+1

theVTab.SetValue(feldsNr,Rec,i) end ' for

theVTab.setEditable(false) theVTab.UpdateSelection

(7)

' HSHARZ.BnTableRandom '

sMax="100"

sMax = MsgBox.Input ( "Eingabe des Maximalwert","Zufallszahlemn eintragen", sMax) if (sMax=nil) then

exit end

if (sMax.isNumber.not) then

MsgBox.Info("Bitte tragen Sie einen gültigen Wert ein","Hinweis") exit

end

theTable = av.GetActiveDoc theVTab = theTable.GetVTab

theTable.StopEditing myList = LIST.Make

theFields = theVTab.GetFields ' getActiveField for each aFeld in theFields

if (aFeld.IsTypeNumber) then myList.add(aFeld)

end end

if (myList.count=0) then

MsgBox.Info("Bitte tragen Sie ein Dezimalfeld in Ihre Tabelle","Hinweis") exit

end

myFeldRandom = MsgBox.list(myList,"Zufalls-Attribut","Auswahl") if (myFeldRandom=nil) then

exit end

' Number.makeRandom(1,100)

theVTab.setEditable(true)

theBitMap = theVTab.GetSelection theBitmap.clearAll

expr = "( Number.MakeRandom(1,"+sMax.asString+") )"

MsgBox.Info(expr,"expr")

theVTab.Calculate(expr, myFeldRandom) theVTab.UpdateSelection

theVTab.setEditable(false)

(8)

' HSHARZ.BnTableMiddle '

theTable = av.GetActiveDoc theVTab = theTable.GetVTab

theTable.StopEditing myList = LIST.Make

theFields = theVTab.GetFields ' getActiveField for each aFeld in theFields

if (aFeld.IsTypeString) then myList.add(aFeld)

end end

if (myList.count=0) then

MsgBox.Info("Bitte tragen Sie ein Dezimalfeld in Ihre Tabelle","Hinweis") exit

end

myFeldQuelle = MsgBox.list(myList,"Quell-Attribut","Auswahl") if (myFeldQuelle=nil) then

exit end

' myFeldQuelle löschen

myList.RemoveObj ( myFeldQuelle )

myFeldZiel = MsgBox.list(myList,"Ziel-Attribut","Auswahl") if (myFeldZiel=nil) then

exit end

' Erste Liste mit den Labels

indizes = { "Startindex", "Endindex" } ' Zweite Liste mit den Defaultwerten defaults = { "1", "4" }

' Aufruf der Eingabe

zahlen = MsgBox.MultiInput( "Auschneiden", "Nummern", indizes, defaults ) ' Erneute Ausgabe ?

if (zahlen.count =0) then exit

end

sStart = zahlen.get(0) sEnd = zahlen.get(1) if (sStart.IsNumber.not) then

Msgbox.Info("Bitte eine gültige Start-Zahl eintragen", "Hinweis") end

if (sEnd.IsNumber.not) then

(9)

Msgbox.Info("Bitte eine gültige End-Zahl eintragen", "Hinweis") end

iStart = sStart.asNumber iEnd = sEnd.asNumber if (iStart>iEnd) then

Msgbox.Info("Die Startzahl muss kleiner gleich der Endzahl sein", "Hinweis") end

theVTab.setEditable(true)

theBitMap = theVTab.GetSelection theBitmap.clearAll

n = iEnd-iStart+1

expr = "( ["+ myFeldQuelle.asString+"].Middle(" + iStart.asString+","+n.asString+") )"

MsgBox.Info(expr,"expr")

theVTab.Calculate(expr, myFeldZiel) theVTab.UpdateSelection

theVTab.setEditable(false)

Abbildung

Tabelle mit zwei zusätzlichen Spalten

Referenzen

ÄHNLICHE DOKUMENTE

Arbeit bzw. der im Kondensator gespeicherten Energie. Je weiter der Kondensator während dieses Vor- gangs bereits aufgeladen ist, desto stärker ist das bereits zwischen seinen Plat-

Die Fläche unter dem Q-U-Diagramm entspricht der verrichteten Arbeit bzw. Je weiter der Kondensator während dieses Vorgangs bereits aufgeladen ist, desto stärker ist das

www.ibn.ch Ausgabe 18.. 6 Wie gross ist die Ladung eines Kondensators mit der Kapazität 70F, wenn er an eine Spannung von 380V gelegt wird?.. www.ibn.ch Ausgabe 18.. 7 Ein Photo

Schreibe in ein beliebiges Feld die Ziffer 1 und hüpfe im Rössel- sprung (2 gerade, 1 seitwärts) weiter.. Nummeriere fortlaufend die

In den folgenden experimentellen Anordnungen wird ein elektrisches Feld erzeugt. a) Die Anordnung besteht zunächst aus zwei Kondensatorplatten, an die eine Spannung von 200V

Erstellen Sie ein Script, welches ein Thema ausschaltet (visible=false). Dazu sollen alle Themen in einer Liste dargestellt werden. Das ausgewählte Thema sollte nicht sichtbar

Solange die Probeladung im homogenen Feld bleibt, ändert sich die Auslenkung nicht, auch wenn man nun den Kondensator quer und parallel zur Richtung seiner Feldlinien

Bei einer Temperatur von 0°C wäre es dann soweit, das Wasser würde gefrieren, wenn nicht ein elektrisches Feld das soweit behindern würde, das noch mehr Energie entzogen werden