Mein Problem besteht darin, dass ich aus einer Tabelle einzelne spezifische Felder (Textfeld Bsp. Ortsname, Info zum Ort etc.) auslesen und in einer Messagebox darstellen lassen will. Leider bekomme ich mit den scripts nur alle Feldeinträge hintereinander ausgelesen.
Hat jemand mal ein Beispielscript mit funktionierenden IDs parat?
Wäre nett,wenn jemand helfen könnte, obwohls einfach sein müsste bekomm ich es nicht hin...
Hat jemand mal ein Beispielscript mit funktionierenden IDs parat?
Wäre nett,wenn jemand helfen könnte, obwohls einfach sein müsste bekomm ich es nicht hin...
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von uwelangehh am Mi., 13.10.2004 - 15:29
PermalinkLeider bekomme ich mit den scripts nur alle Feldeinträge hintereinander ausgelesen.
Welches Script? Der Code waere hilfreich.
Gruss
Uwe
Gespeichert von Gast am Mi., 13.10.2004 - 15:38
Permalinktheview=av.getactivedoc
Thema=theview.getactivethemes.get(0)
theFtab=Thema.getftab
NameFeld=theftab.findfield("Name")
for each rec in theftab 'durchlaufe jeden Datensatz (rec) der Tabelle
DerName=theftab.returnvalue(NameFeld,rec) 'gib mir das, was im Namenfeld des Datensatzes steht
msgbox.info(DerName,"Name der Fläche"++rec.asstring) 'Namen als Info ausgeben
end
Dieses Script von Jürgen Evert (Homepage, Beispiel 17) scheint mir das einzig sinnvolle zu sein, da ich lediglich genau diese Angabe einer Zelle haben möchte.
Ich weiss auch, dass ID Felder benötigt werden, um nun an eine einzelne Zelle "ranzukommen", aber ich hab es bisher nicht geschafft dies zu implementieren.
(Also mein Avenue-Verständnis bewegt sich immer noch im "Anfängerbereich")
Gespeichert von Maxilla am Mi., 13.10.2004 - 16:08
PermalinkProbier's mal damit:
theView=av.getActiveDoc
theThm = theView.getActiveThemes.get(0)
theVTab = theThm.getFTab
theIdFeld = theVTab.findfield("ID")
NameFeld = theVTab.findfield("Name")
theIDList = List.Make
for each rec in theVTab
theIDList.Add(theVTab.ReturnValueString(theIdFeld, rec))
end
theSelIDList = MsgBox.MultiListAsString(theIDList,"Waehle alle Werte fuer Namensinfo:"," ID-Auswahl")
if ((theSelIDList = NIL) or (theSelIDList.count = 0)) then
return NIL
end
theBitmap = theVTab.GetSelection
theBitmap.ClearAll
a = ""+nl
for each sel in theSelIDList
for each rec in theVTab
theRecVal = theVTab.ReturnValueString(theIdFeld, rec)
if (theRecVal.asstring = Sel.asstring) then
theBitmap.Set(rec)
a = a + Sel.asstring+" : "+theVTab.ReturnValueString(NameFeld, rec)+nl
end
end
end
MsgBox.Report(a," Report")
Gespeichert von Gast am Mi., 13.10.2004 - 16:56
Permalinkich werde das austesten und da hab ich gleich mal ein Script an dem ich weiter meine Avenue-Lernerfolge testen kann...
Gespeichert von SvenStudent am Do., 14.10.2004 - 12:57
PermalinkErstmal Danke für das Script - das klappt in etwa wie ich mir das vorgestellt habe.
Eine ganz blöde Frage dazu:
Wie stelle ich die Pfadangabe auf eine bestimmte Tabelle her (im Projekt vorhanden)
theView=av.getActiveDoc
theThm = theView.getActiveThemes.get(0)
theVTab = theThm.getFTab
Diese Zeilen lesen ja nun die Tabelle des aktiven Themas aus - ich benötige allerdings den Zugriff auf andere Tabelle.
Einfach Pfadangabe reinsetzen hat bei mir so nicht funktioniert. (?)
Gespeichert von Maxilla am Do., 14.10.2004 - 13:23
PermalinktheProject = av.GetProject
yourTab = theProject.FindDoc("MeineTabelle.dbf")
oder
yourTab = av.FindDoc("MeineTabelle.dbf")
dann evtl. noch
yourVTab = yourTab.GetVTab
Gespeichert von Gast am Do., 14.10.2004 - 13:57
PermalinktheVTab = VTab.Make ("C:\temp\irgendein.dbf", false, false)
Gespeichert von Gast am Do., 14.10.2004 - 13:58
PermalinktheVTab = VTab.Make ("C:\temp\irgendein.dbf".AsFilename, false, false)
Gespeichert von Maxilla am Do., 14.10.2004 - 14:03
PermalinktheTable = av.GetActiveDoc
theVTab = myTable.GetVTab
Gespeichert von SvenStudent am Do., 14.10.2004 - 16:54
PermalinkDas die Tabelle aktives Doc sein muss will ich eigentlich verhindern...
Irgendwie find ich diese Scriptsprache verwirrend.
Wie "lernt" man Avenue eigentlich am besten?
Gespeichert von Maxilla am Do., 14.10.2004 - 17:22
PermalinkIn meiner Avenue-Anfängerzeit hab ich oft darauf zurückgegriffen: Erstmal überlegen, wie man "zu Fuß" vorgehen würde, z.B. muss man sich, wenn der erste Schritt des Vorgehens das Anlegen eines neuen Shapes ist, ja nicht selber ausdenken wie man das in Avenue macht. Wenn du nämlich einen Doppelklick auf die Tool-Leiste machst, öffnet sich der "Anpassen"-Dialog, und da steht unter "View | Neues Thema...", wie das Systemscript dazu heißt. Dazuladen, nach den eigenen Vorstellungen modifiziern, kompilieren (hier beginnt's dann richtig Spaß zu machen) und dann den nächsten "zu Fuß" Schritt überdenken. Irgendwelche Beispiele oder Hinweise in anderen Skripten findet man als Anfänger immer (naja, meistens)...
Sehr schön - u.A. - auch die Hilfe in ArcView, die einem alle Requests zu allen Klassen auflistet und erklärt.
Natürlich gibt's auch ein paar Bücher dazu. Ich kenne allerdings nur das "Using Avenue", hab aber auch das nie groß benutzt.
Gespeichert von Maxilla am Do., 14.10.2004 - 18:37
PermalinkEinführung in Avenue
Jürgen Everts Einführung in Avenue
Programming in Avenue
Avenue Coding Standards
ESRI Support Center
...
Gespeichert von uwelangehh am Fr., 12.08.2005 - 09:00
Permalinkauch wenn dieser Beitrag längst abgefrühstückt ist:
Infos zum Thema Avenue coding standards finden sich anscheinend nicht mehr unter der angegebenen Adresse, aber zum Beispiel unter:
http://www.sandia.gov/GIS/tech/avcsus.htm
Last not least: Ein neues Avenue-Tutorial habe ich gerade ins Netz gestellt:
http://www.lange-is.de/online/avenue/index.htm
Gruß
Uwe