Hallo zusammen,
wie kann ich mit Hilfe von Avenue ein Feld zu einer bestehenden Tabelle hinzufügen? Habe in der Hilfe nachgesehen aber nichts passendes gefunden. Ich muss aber auch gestehen, dass ich mit Avenue noch nie programmiert habe!
wie kann ich mit Hilfe von Avenue ein Feld zu einer bestehenden Tabelle hinzufügen? Habe in der Hilfe nachgesehen aber nichts passendes gefunden. Ich muss aber auch gestehen, dass ich mit Avenue noch nie programmiert habe!
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von Jörg Thomsen am Mo., 21.02.2005 - 11:06
Permalinkim Handbuch 'Using Avenue' stehts auf Seite 99 (Creating a Table).
In der Online-Hilfe steht es unter vTab.
Jörg
Gespeichert von Gast am Mo., 21.02.2005 - 11:30
Permalinkda steht leider nur wie ich eine neue Tabelle erstellen kann. Wie kann ich denn die breits vorhandene Tabelle aktuell setzen? Ich habe folgendes probiert. Dabei erhalte ich den Fehler: Das Objekt NIL kann die Anforderung GetVtab nicht erkennen.
aTable = av.GetProject.FindDoc("test.dbf")
aVTab = aTable.GetVTab
aVTab.SetEditable(true)
f1 = field.make("test",#Field_short, 5, 0)
f2 = field.make("test1",#Field_short, 15, 0)
avtab.addfields({f1, f2})
Gespeichert von Gast am Mo., 21.02.2005 - 11:58
PermalinkGespeichert von Gast am Mo., 21.02.2005 - 12:03
PermalinkaTable = av.GetActiveDoc
Gespeichert von Gast am Mo., 21.02.2005 - 12:04
PermalinkIn meinem Projekt ist ein Thema "Test" enthalten, welches natürlich auch eine Attributtabelle mit diesem Namen beinhaltet!
Gespeichert von uwelangehh am Mo., 21.02.2005 - 12:42
Permalinkmoechtest du die Attribut-Tabelle des aktiven Themas ergaenzen? Die Tabelle des aktiven Themas bekommst du ueber:
meineTabelle = av.GetActiveDoc.GetActiveThemes.Get(0).GetVTab
Gruss
Uwe
Gespeichert von Gast am Mo., 21.02.2005 - 13:03
Permalinkwenn ich deinen Ausdruck in das Skript (erste Zeile) einfüge erhalte ich die folgende Fehlermeldung:
"Das Objekt Project kann die Anforderung GetActiveThemes nicht erkennen". Was mache ich nur falsch???
Rufe ich das Skript vielleicht falsch auf?
Gespeichert von uwelangehh am Mo., 21.02.2005 - 13:12
Permalink>Rufe ich das Skript vielleicht falsch auf?
Ich fuerchte, du laesst uns im Dunkeln tappen, was du eigentlich moechtest:
1. Welche Tabelle moechtest du editieren?
- die Tabelle eines Themas
- Tabelle mit einem bestimten Namen oder
- Tabelle eines Table-Dokumentes?
2. Moechtest du das Skript z. B. aus einem View heraus aufrufen und die Tabelle des (ersten) aktiven Themas ergaenzen?
Wenn du die Tabelle eines Themas ergaenzen moechtest, dann musst du zum Testen des Skriptes:
1. View aktivieren,
2. Skript-Fenster aktivieren und
3. Skript starten
Deine Fehlermeldung zeigt, dass du von dem Projekt-Fenster aus in das Skript-Fenster gewechselt bist. Dieses erkennt - wie die Fehlermeldung sagt - die Aufforderung GetActiveThemes nicht.
Gruss
Uwe
Gespeichert von Gast am Mo., 21.02.2005 - 13:43
PermalinkIch sehe schon: das ganz ist komplizierter als ich dachte. Ich versuche mal das Problem neu zu beschreiben. Da ich mich mit der Avenue-Programmierung nicht so gut auskenne wußte ich natürlich auch nicht worauf es an kommt:
Ich habe ein ArcView-Projekt. In diesem Projekt ist nur ein Thema (test). Ich muss nun einige der Spalten umformatieren. Dazu wiederum möchte ich einige neue Spalten erzeugen in denen dann das Ergebnis gespeichert werden soll (führende Nullen löschen, Zeichen einfügen).
Vielen Dank für Eure Geduld!
Gruß
Andreas
Gespeichert von Jörg Thomsen am Mo., 21.02.2005 - 15:03
PermalinkDein Ansatz oben (av.GetProject.FindDoc("test.dbf")) war gut, denke ich, damit umgehst Du jedenfalls die Probleme mit den 'aktiven Dokumenten'.
Der Name der bei diesem Aufruf in den Anführungszeichen stehen muss, ist nicht der Dateiname, sondern der Name der im Projektfenster auftaucht.
Meistens ist das sowas wie "Attribut von Thema xy.shp".
Ansonstan bist Du doch auf dem richtigen Weg!
Jörg
Gespeichert von uwelangehh am Mo., 21.02.2005 - 20:50
PermalinkAndreas, sei das Shapefile test.shp als Thema im View "View1" geladen. Dann kannst du wie folgt vorgehen:
' Dein View ist:
meinView = av.GetProject.FindDoc("View1")
' Dein Thema ist:
meinThema = meinView.FindTheme("test.shp")
' Deine Sachdatentabelle ist:
meineTabelle = meinThema.GetFTab
' Jetzt weiter wie in deinem ersten Skript:
' Editierung beginnen
meineTabelle.SetEditable(True)
' Felder erstellen
' Auch wenn es in der Hilfe weitere Enumerationen gibt:
' Avenue kennt meines Wissens nur DOUBLE, DATE, LOGICAL und CHAR
' Alle weiteren Enums benoetigt man gegebenenfalls fuer
' Datenbankzugriffe
Feld1 = Field.Make("test",#Field_double, 5, 0)
Feld2 = Field.Make("test1",#Field_double, 15, 0)
' Felder hinzufügen
meineTabelle.AddFields({Feld1, Feld2})
' Editierung beenden
meineTabelle.SetEditable(False)
Wenn deine Sachdaten-Tabelle bereits als Table-Dokument aufglistet wird, d. h. bereits geoeffnet wurde, so funktioniert auch:
meineTabelle = av.GetProject.FindDoc("Attributes of test.dbf").GetVTab
Das muesste es jetzt aber sein.
Viel Erfolg damit & Gruss
Uwe
Gespeichert von Gast am Di., 22.02.2005 - 07:36
Permalinkvielen Dank für deine ausführliche Hilfe. Es klappt! Nur noch eine Frage:
Wie ich Felder in ArcView selbst verarbeiten kann weiß ich aber wie baue ich diese Berechnung FKZ=[ZN].AsString+“/“+[NN].AsString in den Code ein?
Hast du dazu vielleicht eine Idee?
Gespeichert von uwelangehh am Di., 22.02.2005 - 08:34
Permalinkfuer einen neuen Datensatz schreibst du:
neueDatensatznummer = meineTabelle.AddRecord
Auf ein Feld in deinem Datensatz greifst du zu mit:
meinFeld = meineTabelle.FindField("Feld1")
meineTabelle.SetValue(meinFeld, neueDatensatznummer, FKZ)
Gruss und weiterhin frohes Schaffen
Uwe