Hallo,
kann man Datensätze in einer Tabelle durchnummerieren? Hab da schon mal was mit dem Befehl "rec" bekommen. Allerdings nummeriert dieser Befehl die Datensätze so wie sie in der Tabelle erscheinen.
Das heißt wenn ich nur einen Teil der Tabelle markiere, diesen zB. mit den x-Werten der Größe nach sortiere und dann den Befehl "rec" verwende, muss nicht unbedingt bei 1 begonnen werden und es können Lücken auftauchen.
Gibt es da einen Befehl der (das NUR die markierten Felder nummeriert werden ist klar) nur die markierten Felder vom Anfang der Tabelle mit 1 beginnend ohne Lücken durchnummeriert.
Gruß und Dank
Tobi
kann man Datensätze in einer Tabelle durchnummerieren? Hab da schon mal was mit dem Befehl "rec" bekommen. Allerdings nummeriert dieser Befehl die Datensätze so wie sie in der Tabelle erscheinen.
Das heißt wenn ich nur einen Teil der Tabelle markiere, diesen zB. mit den x-Werten der Größe nach sortiere und dann den Befehl "rec" verwende, muss nicht unbedingt bei 1 begonnen werden und es können Lücken auftauchen.
Gibt es da einen Befehl der (das NUR die markierten Felder nummeriert werden ist klar) nur die markierten Felder vom Anfang der Tabelle mit 1 beginnend ohne Lücken durchnummeriert.
Gruß und Dank
Tobi
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von uwelangehh am Do., 04.11.2004 - 13:40
Permalinkposte gerne mal dein "rec"-Script. Moeglicherweise musst du lediglich eine Zeile wie:
For each rec in theFTab
aendern in:
For each rec in theFTab.GetSelection
Falls ich dich richtig verstanden habe (Was ist ein "rec"-Befehl?) dann versuch's mal.
Viel Erfolg & Gruss
Uwe
Gespeichert von Andreas Wolf am Do., 04.11.2004 - 13:47
PermalinkVersuch es doch mal mit den
Memotools
Da geht das auch prima mit.
LG Andreas
Gespeichert von Maxilla am Do., 04.11.2004 - 13:51
PermalinkOder hiermit (Tabelle editierbar setzen, Feld in das die Nummer soll aktivieren):
theTable = av.GetActiveDoc
theVTab = theTable.GetVTab
theBitmap = theVTab.getSelection
theActFld = theTable.GetActiveField
i = 1
for each rec in theBitmap
SortNo = theTable.ConvertRecordToRow(rec)
theVTab.SetValueNumber(theActFld, rec, i)
i = i + 1
end
@Uwe: Der Befehl "rec" in den FieldCalculator eingesetzt liefert eine durchlaufende Nummerierung anhand der internen ID (RecNo).
Gespeichert von Tobias am Do., 04.11.2004 - 13:55
Permalink@Uwe
Den Befehl hab ich mal von Maxilla bekommen
http://www.anuva.de/service_arcforum.php?action=vthread&forum=1&topic= 1019
Script hab ich leider noch keins geschrieben. Also noch nie eins. Ging bis jetzt alles noch über das Fenster "Feldwertberechnung"
@Andreas
Werd mal nachschauen was Memotools sind.
Gruß Tobi
Gespeichert von Tobias am Do., 04.11.2004 - 14:11
Permalinkdann werd ich mir mal den "Dialog Designer" und das "Using Avenue" Buch schnappen und versuchen mein erstes Skript zu schreiben.....
Dank an alle
Gruß Tobi
Gespeichert von Maxilla am Do., 04.11.2004 - 14:21
PermalinkWie du das oben kursiv gesetzte Script ausführst:
- Geh im Projektfenster auf "Script",
- klick "Neu"
- kopier in das sich öffnende Fenster (wahrscheinlich "Script1") über StrgC / Strg-V das kursivgeschriebene meiner Antwort rein
- klick auf den Haken ("Kompilieren")
- Nun mach deine Tabelle auf
- setz sie editierbar
- aktiviere ein Nummernfeld in das die durchlaufende Nummerierung soll
- öffne auf dem direkten Weg das Script und klick auf das rennende Männchen ("Ausführen")
Mit den MemoTools ist's für Skript-Ungeübte tatsächlich etwas einfacher...
Gespeichert von Tobias am Do., 04.11.2004 - 15:35
Permalink"Das Objekt Projekt kann die Anforderung GetVTab nicht erkennen" steht da nach Ausführung des Skripts.
Keine Ahnung was da gemeint ist.
Was ist der "direkte Weg zum Skript"?
Gruß Tobi
Gespeichert von Maxilla am Do., 04.11.2004 - 15:37
Permalink- Tabelle aktivieren und dann ohne Umwege das Script aktivieren (nicht erst das Projektfenster)...
Das mit dem "öffnen auf direktem Weg" war missverständlich, sorry. Hätte heißen müssen: Aktiviere auf direktem Weg das bereit offene Scriptfenster
:)
Gespeichert von Maxilla am Do., 04.11.2004 - 15:56
PermalinkJedes Script wird sozusagen immer bezogen auf dasjenige "Fenster" angewendet, dass direkt vor Ausführung des Skriptes aktiv war.
In dem Skript heißt es nun:
theTable = av.GetActiveDoc
theVTab = theTable.GetVTab
"ActiveDoc" (also zuvor aktives "Fenster") war in diesem Falle das "Project" (und das heißt jetzt im Skript dummerweise "theTable"). In der zweiten Zeile wird das Projekt dann nach der VTab gefragt, eine Frage die nur eine Tabelle beantworten kann.
Resultat: Passende Fehlermeldung
Gespeichert von Tobias am Do., 04.11.2004 - 16:22
PermalinkAber so wie ich mir das vorstellte gehts halt nicht. Dachte halt wenn eine Druckleitung sich von Ost nach West erstreckt kann man die Schächte bzw. fiktiven Schächte mit den Rechtswerten von West nach Ost sortieren und dann durchnummerieren. Dann hat der westlichste Schacht die kleinste Nummer "1" und der östlichste die größte Nummer.
Anschließend kann man die Nummer mit der vom Landkreis vorgegebenen Nummer zB. 025 für Ortsteil 6 für Druckleitung 01 für Teilgebiet zusammenfügen
Also
"025601"+"000".left(3-[Tabelle].asstring.count)+[Tabelle].asstring
=025601001
Lieber mit der alten Methode von Hand machen
Gruß
Tobi
Gespeichert von Maxilla am Do., 04.11.2004 - 17:35
Permalinkfür dich das ganze noch mal im Dialog Feldwertberechnung.
Also:
Sortier die Tabelle und aktiviere dann das Feld für die Nummerierung. Falls du eine Selektion hast, musst du diese nach oben schieben (Promote). Öffne die Feldwertberechnung und tipp folgendes ein:
av.FindDoc("MyTable").ConvertRecordToRow(rec)
Ersetz "MyTable" durch den Namen deiner Tabelle.
Doch, doch, das funktioniert ;-)
Machs jut, M.
Gespeichert von Tobias am Fr., 05.11.2004 - 07:45
PermalinkVielen vielen Dank Maxilla!
Gruß
Tobi