Im View von ArcView ist ein Punkt auf einer Karte. Wird dieser angeklickt, soll ein Access-Formular aufgerufen werden. Natürlich soll aus der Tabelle, die mehrere Punkte enthält, die richtige Zeile angezeigt werden.
1.)
Geht wohl mit einem Hotlink. Aber wie definiere ich die Hotlink-Eigenschaft? Man kann ein z.B. ein Dokument oder eine Bilddatei verknüpfen, aber wie geht das mit Access? Bestimmt muss ich ein Script verwenden. Gibt es dazu schon ein fertiges?
2.)
Über die SQL-Verbindung in ArcView kann ich, wenn ich nur ArcView gestartet habe, aus einer Tabelle die Punkte automatisch anzeigen lassen, kein Problem.
Nun soll aber aus dem Formular von Access ArcView aufgerufen werden. Der Punkt der Access-Tabelle soll in der Karte angezeigt werden.
Hier weiß ich gar nicht weiter.
1.)
Geht wohl mit einem Hotlink. Aber wie definiere ich die Hotlink-Eigenschaft? Man kann ein z.B. ein Dokument oder eine Bilddatei verknüpfen, aber wie geht das mit Access? Bestimmt muss ich ein Script verwenden. Gibt es dazu schon ein fertiges?
2.)
Über die SQL-Verbindung in ArcView kann ich, wenn ich nur ArcView gestartet habe, aus einer Tabelle die Punkte automatisch anzeigen lassen, kein Problem.
Nun soll aber aus dem Formular von Access ArcView aufgerufen werden. Der Punkt der Access-Tabelle soll in der Karte angezeigt werden.
Hier weiß ich gar nicht weiter.
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von jens schumacher am Mo., 18.08.2003 - 17:44
Permalinkzu 1: schau mal unter den ArcView FAQ unter Datenbank nach.
Jens
Gespeichert von Alex am Mo., 18.08.2003 - 17:46
PermalinkHotlink reicht nicht, ebenso wie die ODBC-Schnittstelle.
Mittlerweile funktioniert aber auch fast alles bei mir mit DDE. Heißt, ich kann in der Datenbank eine Koordinate angeben, die ArcView automatisch in einem Shape setzt.
In einem anderen Thread schreibt Johannes, dass man dem Script eine Schaltfläche zuweisen kann. Wie kann ich dem Script ein Klickereignis auf einem Shape zuweisen???
Andersherum, kann ich einen Punkt in ArcView anklicken und automatisch wird Access, das zugehörige Formular und der zum Punkt zugehörige Datensatz angezeigt.
Es wird sogar geprüft, ob Access schon geöffnet war.
Ein Problem habe ich damit erstmal nur noch eines:
Ich kann nicht wirklich den Punkt anklicken, sondern muss in der Attributtabelle des Shapes einen Datensatz auswählen und dann das Script ausführen. Aber ich will ja direkt den Punkt anklicken können. Daraufhin soll sich dann nicht mehr die Attributtabelle, sondern mein Access-Formular öffnen.
Gespeichert von Uwe Kuhnert am Mo., 18.08.2003 - 17:47
Permalinkvielleicht hilft Dir das etwas weiter:
http://gislounge.com/features/aa082300a.shtml
Gruß
Uwe
Gespeichert von Uwe Kuhnert am Mo., 18.08.2003 - 17:48
PermalinkProblem ist jetzt noch, dass ich einen Datensatz in der Attributtabelle gelb markieren muss, um ihn im Access-Formular anzeigen zu können. Dagegen wird beim "Identifizieren"-Button nach Anklicken eines Punktes oder Polygons der entsprechende Datensatz in der Attributtabelle kurz schwarz markiert, bevor dessen Thementabelle öffnet. Diese schwarze Markierung muss man doch abfragen können, wie die gelbe Markierung. Aber wie?
Dafür war:
http://gislounge.com/features/aa051700.shtml
ganz hilfreich!
Urks, mittlerweile bin ich mit einem Thema in zwei Threads. Schande über mein Haupt!
Falls Ihr mir noch helfen könnt und möchtet, schreibt doch bitte die Antwort in "Wie führe ich ein Avenue Script aus?".
Gespeichert von Uwe Kuhnert am Mo., 18.08.2003 - 17:49
Permalinkbin jetzt zu faul zum suchen, aber war das Script gemeint?
theView = av.FindDoc("dein_view")
theTheme = theView.FindTheme( "dein_shape.shp")
theFtab = theTheme.GetFtab
theThemeBitmap = theFtab.GetSelection
for each r in theThemeBitmap
ActID = theFtab.ReturnValueString(theFtab.FindField( "dein_eindeutiges_feld_im_dbf"),r)
end
msgbox.info(ActID, "Ausgewählt: ")
' nur zum anzeigen
'ActID = SELF.asstring
Condition = "[OpenForm frm_arcview,,,[dein_eindeutiges_feld_in_Access] = """ +ActID+ """]"
theRequest = DDEClient.Make( "MSAccess", "System")
if (theRequest.HasError) then
MsgBox.Info( "Ich starte jetzt die Datenbank. blabla..." + (10.aschar) + "Bitte wiederholen Sie danach Ihre Abfrage ." , "Kleine Info:" )
system.execute("C:\Programme\Microsoft Office\Office\msaccess.exe C:\fachdaten\db\meine_datenbank.mdb")
theRequest = DDEClient.Make( "MSAccess", "System ")
end
theRequest.execute(Condition)
'Ausführen
theRequest.Close
'Schliessen
---
Das kannst Du anpassen und im View einem neuen Button zuordnen (Im View Doppelklicken auf die Menüleiste - Kategorie Schaltflächen - Neu - und beim Click-Ereignis das zuvor kompilierte Script angeben. Ich weiß nicht, wo ich das mal gefunden habe - kann sein bei Jürgen Evert, der ja hier auch im Forum aktiv ist vielleicht schaust Du mal auf dessen Homepage, sehr hilfreich.
Hth
Uwe