tabellen in einer combobox anzeigen und mit objekt

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!!!
Hallo Gast,

das 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.
hi Jörg,

danke 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. :(
ach ja mit diesem script geht das... ist das script OK oder ist das müll?

'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
nee halt, bei dem script kommt diese fehlermeldung: [Microsoft][ODBC Microsoft Access Driver] Das Microsoft Jet-Datenbankmodul findet die Eingangstabelle oder Abfrage 'tblXY' nicht. Stellen Sie sicher, dass sie existiert und der Name richtig eingegeben wurde.

also meine access datenbank heißt "testdate" und liegt direkt aus c:\ was ist das problem? außer, dass ich das nicht verstehe??? :)
Hallo,

ä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 ;-)
Frage (an die Gemeinde):
ich kann das Script bei mir nicht einmal kompilieren. AV stoppt bei 'ODBCConnection' - keine gültige Avenue-Anweisung.
???

Jörg
Hallo alle,

alternativ 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
An Jörg: "ODBCConnection" ist eine Klasse der Erweiterung "Database Access". Du kannst das Skript kompilieren, wenn du die Extension lädtst.
...
also mit dem folgenden script lässt sich eine tabelle aus access erstellen und ich habe auch eine taste eingefügt, die es ermöglicht tie tabelle zu aktualisieren aber nur wenn die tabelle hinter dem dialog liegt! '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

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!!!
hab hier was gefunden wie ich was anzeigen kann: aListBox.DefineFromVTab (aVTab, aListOfFields, selectionOnly)

so 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!
Hallo anonymer Gast,

vielleicht liefert dir die Hilfe zu DEFINEFROMVTAB (Listbox) ein Beispiel, an dem du sehen kannst, wie's geht?

Gruss

Uwe