Im Thema von Sven ging es um den Zugriff per Script auf eine Tabelle, die nicht zum aktiven Thema gehört.
Es wurde folgendes Script-Beispiel genannt:
theVTab = VTab.Make ("C:\temp\irgendein.dbf".AsFilename, false, false)
gibt es eine ähnliche Möglichkeit, auf ein Thema (ist zwar im Projekt, aber nicht aktiv) zuzugreifen?
Kann man den Make-Befehl auch für Shapes verwenden? Und wo muß er dann im Start vom Script hin?
theView=av.getActiveDoc
theThm = theView.getActiveThemes.get(0)
theVTab = theThm.getFTab
Danke und Gruß,
Maggie
Es wurde folgendes Script-Beispiel genannt:
theVTab = VTab.Make ("C:\temp\irgendein.dbf".AsFilename, false, false)
gibt es eine ähnliche Möglichkeit, auf ein Thema (ist zwar im Projekt, aber nicht aktiv) zuzugreifen?
Kann man den Make-Befehl auch für Shapes verwenden? Und wo muß er dann im Start vom Script hin?
theView=av.getActiveDoc
theThm = theView.getActiveThemes.get(0)
theVTab = theThm.getFTab
Danke und Gruß,
Maggie
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von Maxilla am Fr., 12.08.2005 - 10:44
PermalinktheView = av.getActiveDoc
' oder: av.FindDoc("View1")
theThm = theView.FindTheme("DeinThema.shp")
Make-Befehl
theView = av.getActiveDoc
theSrcName = SrcName.Make("C:\temp\DeinShapefile.shp")
theThm = Theme.Make(theSrcName)
theView.AddTheme (theThm)
oder
theView = av.getActiveDoc
theThm = Theme.Make("C:\temp\DeinShapefile.shp".AsSrcName)
theView.AddTheme (theThm)
Gespeichert von Maggie am Fr., 12.08.2005 - 11:23
Permalinkerst mal vielen Dank, die erste Version reicht eigentlich schon hin, doch leider habe ich den Eindruck, daß meine spätere Abfrage im Script das Thema aus der ersten Anfrage nicht findet.
theView = av.getActiveDoc
theTheme = theView.FindTheme("mein Adressenthema.shp")
theFTab = theTheme.getFTab
eingabefelder = {"Ort", "Strasse", "Hausnummer"}
standardwerte = {"","",""}
key = MsgBox.MultiInput( "Welche Adresse suchen Sie?", "Adressensuche", eingabefelder, standardwerte)
strOrt = key.Get(0)
strStrasse = key.Get(1)
strHausnummer = key.Get(2)
strQuery = "([Ort] = " + strOrt.Quote + ") and ([Strasse] = " + strStrasse.Quote + ") and ([Hausnummer] = " + strHausnummer + ")"
theFTab.Query (strQuery,theFTab.GetSelection, #VTAB_SELTYPE_NEW)
av.GetProject.SetModified(true)
theView = av.GetActiveDoc
r = Rect.MakeEmpty
for each t in theView.GetActiveThemes
if (t.CanSelect) then
r = r.UnionWith(t.GetSelectedExtent)
end
end
if (r.IsEmpty) then
msgbox.info("Leider konnte die angegebene Adresse nicht gefunden werden. Achten Sie auf die richtige Schreibweise! (Benutzen Sie Umlaute, also z.B.'ß' statt 'ss' und 'ä' statt 'ae' usw.; Schreiben Sie das Wort 'Straße' immer aus. Sind evtl. Bindestriche im Straßennamen notwendig?)","")
elseif ( r.ReturnSize = (0@0) ) then
theView.GetDisplay.PanTo(r.ReturnOrigin)
theView.GetDisplay.ZoomToScale(2000)
end
Ich nehme mal an, das Problem liegt in der Zeile
for each t in theView=getActiveThemes
Die Sache mit den active themes wollte ich ja eigentlich umgehen...
Was tun? Zu Beginn das Thema per Script aktiv schalten, oder kann ich unten auf eben dieses bestimmte Thema verweisen?
Danke!
Maggie
Gespeichert von Maxilla am Fr., 12.08.2005 - 11:43
Permalinkif (theTheme.CanSelect) then
r = r.UnionWith(theTheme.GetSelectedExtent)
end
Und die CanSelect Request ist dann auch überflüssig weil die bei einem FTheme immer TRUE zurückgibt.
Gespeichert von Maggie am Fr., 12.08.2005 - 11:52
Permalinkweißt Du, das eigentlich Problem ist, daß ich auch nicht so genau weiß, was ich da mache... Ich hatte mir mein Ursprungsscript aus mehreren Quellen zusammengebastelt, um meinen Kollegen eben die Adressensuche zu erleichtern. Und dann war immer das Problem, das richtige Thema aktiv zu schalten. Also wollte ich das umgehen.
Ich danke Dir für Deine prompte und wirkungsvolle Hilfe (es klappt jetzt nämlich!)
Schönes Wochenende,
Maggie