Hallo,
kann mir jemand sagen, ob eine möglichkeit besteht in eine Access-Datenbak zu schreiben? bzw. in welcher datenbank kann werte verändern???
danke!
kann mir jemand sagen, ob eine möglichkeit besteht in eine Access-Datenbak zu schreiben? bzw. in welcher datenbank kann werte verändern???
danke!
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von Gast am Di., 19.10.2004 - 14:46
Permalink'ODBCConnection.SetErrorLogStatus(#ODBCERRORLOGGING_NONE)
'ODBCConnection.SetWarningsLogStatus(#WARNINGSLOGGING_NONE )
TheDB="c:\temp\dbTest.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
Gespeichert von uwelangehh am Di., 19.10.2004 - 15:05
Permalinkdu moechtest ueber Avenue in eine Datenbank schreiben. Das funktioniert bei einer ODBC-Connection in Form einer so genannten Transaction. Sieh dir hierzu am besten das Beispiel zu der Methode BeginTrans in der Klasse ODBCConnection an.
Gruss
Uwe
Gespeichert von anderer Gast am Di., 19.10.2004 - 16:56
PermalinkGespeichert von Jörg Thomsen am Di., 19.10.2004 - 17:37
Permalink> ich die Finger lassen und besser dem guten alten SQLCon vertrauen.
dem kann ich nur zustimmen! SQLCon ist eine sehr schöne Methode, über die man die meisten sql-Befehle auf eine DB los lassen kann. Einzige Bedingung: In Windows muss eine odbc-Verbindung zur DB bestehen (über Systemsteuerung einzurichten)
Jörg
Gespeichert von uwelangehh am Di., 19.10.2004 - 20:06
Permalinksiehe zu dem Thema ODBCConn vs. SQLConn auch tabellen in einer combobox anzeigen.
Gruss
Uwe.Lange(at)DB-GIS.de
Gespeichert von Gast am Mi., 20.10.2004 - 11:45
Permalinkich bin euch echt dankbar für eure hilfe!!!
hab hier so ein script ausgegraben... kann ich das verwenden?
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
Gespeichert von Gast am Mi., 20.10.2004 - 15:55
Permalinkalso, ich erstelle eine "Test.mdb" (access datenbank) und importiere diese in mein Arcview-projekt. ich kann diese tabelle aber nicht bearbeiten. was für ein script muss ich haben, damit ich was ich die datenbank schreiben kann? irgentwie hat alles andere nicht funktioniert... oder schnall ich da was nicht? ...HILFE...
Gespeichert von anderer Gast am Mi., 20.10.2004 - 16:02
PermalinkGespeichert von Jörg Thomsen am Mi., 20.10.2004 - 16:09
PermalinkDu kannst die Datenbanktabellen nicht mit den 'normalen' Editierfunktionen für Tabellen in AV verändern. Um Daten aus AV heraus zu verändern, musst Du per Avenue SQL-Befehle an die Datenbank schicken. Zum Beispiel:
Schreiben einer neuen Zeile in die vorhandene Tabelle 'wald' mit den Spalten ID und Flächengröße und Eintragen der ID = 6 und Flächengröße = 254
sqlString =
"INSERT INTO wald VALUES (6, 254)"
theSQLCon.ExecuteSQL(sqlString)
Gespeichert von Gast am Mi., 20.10.2004 - 16:09
Permalink:)
Gespeichert von Jörg Thomsen am Mi., 20.10.2004 - 16:10
PermalinkGespeichert von Jörg Thomsen am Mi., 20.10.2004 - 16:12
PermalinkJörg
Gespeichert von Gast am Mi., 20.10.2004 - 16:18
PermalinksqlString =
"INSERT INTO wald VALUES (6, 254)"
theSQLCon.ExecuteSQL(sqlString)
in ein script zu schreiben und dann auszuführen? oder wo muss ich diesen sql-befehl einfügen?
Gespeichert von Jörg Thomsen am Mi., 20.10.2004 - 16:24
PermalinkHier noch ein Tipp zu SQL, es gibt davon natürlich etliche:
http://www.w3schools.com/sql/
Jörg
Gespeichert von Gast am Mi., 20.10.2004 - 16:28
Permalinkdanke!!! :)
Gespeichert von Jörg Thomsen am Mi., 20.10.2004 - 17:52
Permalink'n schönen Feierabend! Jörg
Gespeichert von Gast am Fr., 22.10.2004 - 09:08
Permalinkich krieg das irgendwie nicht auf die reihe... mein script sieht jetzt so aus:
theSQL=SQLCon.Find("schreibtest")
sqlString =
"INSERT INTO wald VALUES (6, 254)"
SQLCon.ExecuteSQL(sqlString)
wenn ich dieses ausführe, erscheint folgende meldung:
A(n) Nil objekt does not recognize request ExecuteSQL
ich habe eine access datenbank erstellt mit dem namen "wald" und zwei feldern, die "ID" und "Flaeche" heißen. hab dann in der Verwaltung eine ODBC Datenbank angelegt indem ich einen "Microsoft Access Treiber" genommen habe und dann eine datenbank auf d:\Test\sreibtest.mdb gewählt hab.
was mache ich falsch?
was meint Jörg mit: "vorher the SQLCon definierst wie in Deinem Beispielscript" und " Das Ausführen der Schreibaktion in der DB ist der einfache Teil. Vorher musst Du Dir i. d. R. den SQLString aus Benutzereingaben zusammenbasteln, d. h. Du brauchst Dialoge für die Benutzereingaben und Du musst dann mit Stringverarbeitung gültige SQL-Befehle kreieren."??? ich habe doch eine SQLCon. definiert und Posswort habe ich nicht definiert.
Gespeichert von Andreas Wolf am Fr., 22.10.2004 - 10:17
Permalinkich habe mal zu Betrieben die Koordinaten aus ArcView in eine
Access-Datenbank
mit folgendem Script geschrieben.
theView = av.GetActiveDoc
pt = theView.GetDisplay.ReturnUserPoint
x = pt.GetX
y = pt.GetY
x = x.setformat("d").asstring
y = y.setformat("d").asstring
p = MsgBox.input("Bitte vergeben sie eine Schlüsselnummer","Betriebsschlüssel","")
'if (p= nil) then
' MsgBox.error ("Sie müssen eine Schlüsselnummer vergeben!","Fehler")
' exit
'end
sqlString = "UPDATE BETRIEBE SET BETRS_RWERT = '"+x+"' , BETRS_HWERT = '"+y+"' WHERE BETR_SCHLUESSEL = '"+p+"';"
SQLCon.Find("Abwasserdatenbank").ExecuteSQL(sqlString)
av.FindDoc("Abwasser").GetVTab.Refresh
Vielleicht hilft dir das ja weiter...
Wobei "Abwasserdatenbank" meine ODBC-Verbindung ist.
und Abwasser war meine Tabelle aus der ich das Punktthema generiert hatte.
Gespeichert von Jörg Thomsen am Fr., 22.10.2004 - 10:54
PermalinkDu schreibst
SQLCon.ExecuteSQL(sqlString)
und nicht
theSQL.ExecuteSQL(sqlString)
Deine SQLCon befindet sich in der Variablen theSQL. Daher die Fehlermeldung (die besagt, dass Du eine Methode ExecuteSQL auf ein Objekt anwendest, dass diese Methode nicht unterstützt (Gast, ignoriere das folgende, vielleicht kann mir diese Frage ja jemand anderes beantworten: wieso SQLCon als Avenue-Klasse ein nil-object sein soll ist mir alerdings schleierhaft))
Und, lieber Gast, ich habe den Eindruck, dass Du nicht so recht voran kommst, hast Du schon mal darüber nachgedacht, die Arbeit irgednwo (z. B. bei mir ;-) in Auftrag zu geben? Bei all der Tüftelei und den Fehlversuchen, ist das sicher die günstigere Alternative.
Viele Grüße, Jörg
Gespeichert von Gast am Fr., 22.10.2004 - 11:04
Permalinksonst kommt die meldung is not an Avenue statement...
muss ich eigentlich folgendes davor schreiben?:
TheDB="c:\temp\dbTest.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
ich glaube nicht oder?
Gespeichert von Jörg Thomsen am Fr., 22.10.2004 - 11:13
Permalink> ich hab auch theSQL.ExecuteSQL(sqlString) geschrieben
dann liegt es daran, dass theSQL nicht ordentlich definiert ist. Gibt es denn in Deinem Windows die ODBC-Verbindung "schreibtest"?
Gespeichert von Gast am Fr., 22.10.2004 - 12:18
Permalinkdas programm schnallt es mit dem execute immer noch nicht, auch nicht bei deinem script... ich krieg langsam graue haare :)
Gespeichert von Gast am Fr., 22.10.2004 - 12:33
PermalinkGespeichert von Gast am Fr., 22.10.2004 - 12:38
PermalinkGespeichert von Jörg Thomsen am Fr., 22.10.2004 - 13:31
PermalinkGast (formaly known as Jörg Thomsen)
Gespeichert von Gast am Fr., 22.10.2004 - 13:40
PermalinkGespeichert von Gast am Fr., 22.10.2004 - 13:48
PermalinkGespeichert von Jörg Thomsen am Fr., 22.10.2004 - 13:53
Permalink? habe das deutsche Menü, weiß jetzt nicht was das ist, wo steht's? Wähltst Du da die mdb-Datei oder die ODBC Verbindung aus?
> nein doch nicht
dann ist die ODBC-Verbindung nicht in Ordnung
Gespeichert von Gast am Fr., 22.10.2004 - 14:02
Permalink>dann ist die ODBC-Verbindung nicht in Ordnung
was tun?
Gespeichert von Gast am Fr., 22.10.2004 - 14:23
PermalinktheCon = SQLCon.find("schreibtest")
if (theCon=nil) then
msgbox.Error("gib es nicht", "Can't Connect")
exit
end
und rate mal was für eine meldung kommt... ...genau, "gibt es nicht"
so kann mir jemad mal eine genaue beschreibung geben machen bzw. genau beschreiben wie ich denn jetzt diese ODBC verbindung machen soll??? bitte schrittweise. damit die eventuelle fehleranalyse leichter ist. danke
Gespeichert von Jörg Thomsen am Fr., 22.10.2004 - 14:35
Permalinksach ich doch.
> so kann mir jemad mal eine genaue beschreibung
könnte ich, ist mir jetzt aber doch zu viel, google doch mal ein wenig zum Thema
Jörg
Gespeichert von Gast am Fr., 22.10.2004 - 14:57
Permalinkz.B.: theCon = SQLCon.find("D:\Testdaten\schreibtest.mdb")
Gespeichert von Gast am Fr., 22.10.2004 - 15:35
PermalinkGespeichert von Gast am Mi., 27.10.2004 - 11:05
Permalinkdanke für eure hilfe!!! :)