hi ich bin ziemlich unerfahren was das das programmieren mit arcview angeht und hoffe, dass ich mich nicht allzu kompliziert und unverständlich ausdrücke...
also ich möchte mir aus einer tabelle z.b. zwei spalten in einer combobox anzeigen lassen. anschließend möchte ich einen datensatz aus den angezeigten daten markieren und einem markierten objekt im view zuweisen. diese "verknüpfung" soll in der tabelle auch vernerkt werden. d.h wenn der datensatz schon verknüpft ist, soll der kein zweites mal in der conbobox-liste erscheinen. ach ja, die tabelle soll auch aus einer access oder sql datenbank stammen. oder kann man das auch direkt aus der datenbank ohne eine zwischentabbelle konstruiren???
ich hab echt kein plan! danke schon mal im voraus!!!
also ich möchte mir aus einer tabelle z.b. zwei spalten in einer combobox anzeigen lassen. anschließend möchte ich einen datensatz aus den angezeigten daten markieren und einem markierten objekt im view zuweisen. diese "verknüpfung" soll in der tabelle auch vernerkt werden. d.h wenn der datensatz schon verknüpft ist, soll der kein zweites mal in der conbobox-liste erscheinen. ach ja, die tabelle soll auch aus einer access oder sql datenbank stammen. oder kann man das auch direkt aus der datenbank ohne eine zwischentabbelle konstruiren???
ich hab echt kein plan! danke schon mal im voraus!!!
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von Jörg Thomsen am Mo., 11.10.2004 - 17:59
Permalinkdas ist keine leichte Aufgabe für einen der 'unerfahren was das das programmieren mit arcview angeht' ist.
Und mal eben zu schreiben, was im Einzelnen zu tun ist, ist auch schwer. Ich fange mal, vielleicht können andere Forumsteilnehmer die Anleitung ergänzen :-)
- Du kannst beim Aufruf einer combobox bestimmen, welche Felder einer Tabelle angezeigt werden sollen
- da in einer einer combobox vTabs angezeigt werden, muss die Tabelle nicht als 'table' im Projekt vorhanden sein, es reicht eine vTab, die das Ergebnis einer SQL-Verbindung zu einer DB ist.
Gespeichert von Gast am Di., 12.10.2004 - 12:21
Permalinkdanke für die antwort!!! es ist tatsächlich nicht einfach! wie kann ich denn das machen? ich meine, aufrufen und bestimmen. ich möchte das gerne so haben, dass ich auf einen button "auslesen" klicke, das programm mir allen noch nicht verknüpften datensätze anzeigt.(habe buttons und die combobox bzw. listbox in einem dialog schon erstellt) muss ich ein script schreiben der die daten aus einer tabelle ausliest und in die box einfügt oder wie geht das??? und gleich die nächste frage: wie geht das? also wie man eine access DB in einer neuen tabelle öffnet hab ich hier im forum schon gefunden... viel weiter komm ich noch nicht. :(
Gespeichert von Gast am Di., 12.10.2004 - 12:23
Permalink'ODBCConnection.SetErrorLogStatus(#ODBCERRORLOGGING_NONE)
'ODBCConnection.SetWarningsLogStatus(#WARNINGSLOGGING_NONE )
TheDB="c:\Testdaten.mdb"
TheODBCConnectStr="DRIVER={Microsoft Access Driver (*.mdb)};DBQ="+TheDB+";"
TheEncryptString = ODBCConnection.MakeEncryptConnectionStr (TheODBCConnectStr)
theCon = ODBCConnection.MakeWithConnStr (TheEncryptString)
if (theCon<>Nil) then
if (theCon.HasError) then
MsgBox.Error("Problem connection!","Error")
ODBCConnection.SetErrorLogStatus(#ODBCERRORLOGGING_DISPLAY)
ODBCConnection.SetWarningsLogStatus(#WARNINGSLOGGING_DISPLAY )
return nil
end
else
MsgBox.Warning("DB not found!","Warning")
return Nil
end
'create DBTable
theQuery = QueryDef.Make(theCon)
theQuery.SetSelectColumns({"Id","X","Y"})
theQuery.SetFromTables({"tblXY"})
theDBTable = DBTable.Make(theQuery)
theDBTable.SetName("XY table")
'update XY
theDBTable=av.FindDoc("XY table")
theQuery = theDBTable.GetQueryDef
'theQuery.SetSelectColumns ({"Id","X","Y"})
TheRSet=theQuery.OpenRecordSet
TheFldX= TheRSet.FindField("X")
TheFldY= TheRSet.FindField("Y")
if (TheRSet.Edit ("Id = 1")) then
TheRSet.SetValue(TheFldX, 3333)
TheRSet.SetValue(TheFldY, 4444)
TheRSet.Update
end
TheRSet.EndUpdate
TheRSet.Close
theDBTable.Refresh
Gespeichert von Gast am Di., 12.10.2004 - 12:35
Permalinkalso meine access datenbank heißt "testdate" und liegt direkt aus c:\ was ist das problem? außer, dass ich das nicht verstehe??? :)
Gespeichert von Jörg Thomsen am Di., 12.10.2004 - 13:01
Permalinkähm, interessant.
Ich benutze immer ODBC-Verbindungen in Wndows, keine DB-Dateien mit Pfadangaben aus ArcView heraus, aber das scheint nicht das Problem zu sein, sonst gäbe es ja schon vorher eine Fehlermeldung. Will sagen: die DB wird gefunden und eine Verbindung wird hergestellt.
Die Fehlermeldung sagt, dass in der DB keine Tabelle 'tblXY' existiert. Das solltest Du überprüfen.
('Abfrage' ist in diesem Zusammenhang das MS Synonem für Datenbank-View, die können genauso abgefragt werden wie Tabellen, aber das nur zur Info am Rande).
Jörg
P.s.: 'Gast' ist ein komischer Name ;-)
Gespeichert von Jörg Thomsen am Di., 12.10.2004 - 13:15
Permalinkich kann das Script bei mir nicht einmal kompilieren. AV stoppt bei 'ODBCConnection' - keine gültige Avenue-Anweisung.
???
Jörg
Gespeichert von uwelangehh am Di., 12.10.2004 - 13:58
Permalinkalternativ bietet sich eine SQLConn an:
theSQL=SQLCon.Find("MeineODBCVerbindung")
theSQL.Login("user/password")
astring="Select * from table1"
theVTab=VTab.MakeSQL(theSQL, astring)
myTable=Table.Make(theVtab)
av.GetProject.AddDoc(mytable)
mytable.GetWin.Open
Gruss und viel Erfolg bei dem grossen Projekt
Uwe
Gespeichert von Maxilla am Di., 12.10.2004 - 14:20
Permalink...
Gespeichert von Gast am Di., 12.10.2004 - 14:43
Permalink'ODBCConnection.SetWarningsLogStatus(#WARNINGSLOGGING_NONE )
TheDB="c:\testdaten.mdb"
TheODBCConnectStr="DRIVER={Microsoft Access Driver (*.mdb)};DBQ="+TheDB+";"
TheEncryptString = ODBCConnection.MakeEncryptConnectionStr (TheODBCConnectStr)
theCon = ODBCConnection.MakeWithConnStr (TheEncryptString)
if (theCon<>Nil) then
if (theCon.HasError) then
MsgBox.Error("Problem connection!","Error")
ODBCConnection.SetErrorLogStatus(#ODBCERRORLOGGING_DISPLAY)
ODBCConnection.SetWarningsLogStatus(#WARNINGSLOGGING_DISPLAY )
return nil
end
else
MsgBox.Warning("DB not found!","Warning")
return Nil
end
und wie füge ich jetzt bestimmte spalten oder überhaupt spalten in eine liste bzw. in eine combobox (gibt es dort einen unterschied)?
ich danke euch echt für eure hilfe!!!
Gespeichert von Gast am Di., 12.10.2004 - 14:54
Permalinkso und was muss ich jetzt wo eintragen damit keine fehlermeldung kommt? ihr merkt bestimmt spätestens jetzt, dass ich wirklich keinen blassen schimmer von arcview habe... :) ich finde, dass das programm überhaupt nicht so einfach ist wie es in den büchern beschrieben wird!
Gespeichert von Gast am Di., 12.10.2004 - 17:39
Permalinkvielleicht liefert dir die Hilfe zu DEFINEFROMVTAB (Listbox) ein Beispiel, an dem du sehen kannst, wie's geht?
Gruss
Uwe