Generve mit SQL-Verbindung nach Access

Moin Allerseits!

Möchte eine Abfrage aus einer Access DB über 'SQL-Verbindung' mit meinem apr verbinden. Nachdem alles fertig ist, und auch alles prima aussieht, das apr gespeichert und geschlossen ist, gibts dann den Ärger beim erneuten Öffnen. Und zwar gibts ne 'Segmentation Violation' und 'Das Projekt konnte nicht geöffnet werden' wenn das Projekt direkt (also durch Doppelklick aufs .apr) geöffnet wird. Wenn man es 'von Hand' öffnet (also über Datei->Projekt öffnen...) fragt er nach wo die DB geblieben ist.
Nach ein bisschen Rumgesuche hab ich ein Script zur vermeidung des ganzen gefunden (siehe Thema von Silke Struck weiter unten...), das macht auch das Nachgefrage beim Öffnen von Hand weg. Aber beim direkten Öffnen bleibt der Ärger!
Weiss jemand wie mensch das in den Griff bekommen kann?

Schonmal danke und schöne Grüße,
Emu
PS: War ein Irrtum, auch beim von Hand Öffnen macht er Ärger (heisst: fragt nach der DB), wenn ArcView zwischendurch geschlossen war. Also auch das Script nützt nix!

:-(
Hallo und Guten Morgen,
ich hatte und habe hier ein ähnliches Problem; beim Umwandeln der mdb-Datei der LFU-Daten bin ich beinahe verzweifelt, vor allem, weil ich das ganze in ein Script gepackt habe. Und wenn man dann die apr wieder aufruft und bekommt ohwei-violation und das Script ist beim Teufel, dann wünscht man ArcView gleich hinterher. Am besten man setzt einen Preis auf die beste SQL-Access-Verbindung aus. Erster Preis : einmal den Programmierer dieser Verbindung verhauen dürfen...
Klaus
Hallo Forum,

zu der Thematik hab ich mal die Frage: das oben angesprochene Script über das Silke Struck geschrieben hat, habe ich auch erwartungsvoll ausprobiert und komme aber beim kompilieren des Scripts nicht weiter. Habt Ihr das gleiche Problem oder läuft das bei euch problemlos? Bei mir kommt folgende Meldung: "Unerkanntes Objekt: ODBCConnection". Scheint als Variable zu fungieren die nicht deklariert wurde???

Hier noch mal das Originalscript:

'Connection DB
'_____________________________________________________________________ ___________________
'ODBCConnection.SetErrorLogStatus(#ODBCERRORLOGGING_NONE)
'ODBCConnection.SetWarningsLogStatus(#WARNINGSLOGGING_NONE )
TheDB="c:\temp\test.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


Andreas
Du musst die Database Access-Extension laden.
Moin,

>Das Projekt konnte nicht
>geöffnet werden' wenn das Projekt >direkt (also durch Doppelklick >aufs .apr) geöffnet wird

Diese Fehler kommt im allgemeinen dan, wenn irgendwo im Pfad/Dateinamen ein Leerzeichen ist. Öffnet man das Teil dann über Öffnen, dann findet er es. DIeser Fehler ist also nur durch das Vermeiden von Leerzeichen in Pfaden und Dateinamen (sollte man IMHO grundsätzlich so halten) verhindern.
Gruß
André
Hallo Leute!

Nochmal zu dem Skript, das die Frage nach der Datenbank erübrigen sollte. Hab jetzt einen anderen Weg gefunden. Über Einstellungen > Systemsteuerung (> Verwaltung) > ODBC-Datenquellen öffnen. Bei Benutzerdatenquellen "Hinzufügen" wählen, dann den entsprechenden Access-Treiber, einen Namen und die gewünschte Datenbank auswählen. Bei der SQL-Verbindung in ArcView dann diese Benutzerdatenquelle verwenden. Dann kommt keine Frage nach der Datenbank mehr und das Skript wird überflüssig!

Grüße,
Silke
Hallo!

Noch ein Nachtrag. Habe mittlerweile herausgefunden, dass das Skript der erste Teil eines längeren Skriptes ist, das eine Tabelle einfügt, so wie man es in ArcView auch über Project > "Add Database Table" machen könnte.

Hier das ganze Skript:

'Connection DB

'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


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

Und wenn man dann die apr wieder aufruft und bekommt ohwei-violation und das Script ist beim Teufel

falls du damit meinst, dass das Script ganz und gar verloren sein sollte, so gibt es hierfuer folgende Loesung:

1. APR-Datei im Editor oeffen
2. ueber den Namen des Skriptes oder das Wort SCRIPT nach deinem Script suchen
3. innerhalb des Textes muss man dann lediglich \n durch ein Zeilenende ersetzen.

Viel Erfolg und Gruss

Uwe
Moin!

Ging ja richtig was los hier. Schönen Dank an alle die sich dazu Gedanken gemacht haben!

@ Gast:
Jo, die Database Access-Extention hab ich natürlich drinnen.

@ Andre Steinhaeuser:
Waren keine Leer- oder Sonderzeichen im Pfad, auch nix länger als 8 Zeichen.

@ Silke Struck:
Ja, funktioniert! Ist erstmal eine Lösung, obwohl nicht die 'eleganteste'. Wenn das ein ArcView-Bug ist, sollten doch die Esri-Leutz mal was für Ihr vieles Geld tun. Aber auf jedenfall recht vielen Dank!

Noch ne frage:
Warum bekomme ich auf dem umgekehrten Weg (also Shape.dbf in Access verknüpfen) immer eine Fehlermeldung, dass die Quelle nicht gefunden werden konnte, weil sie vermutlich nicht existiert? Was mache ich da falsch?

Schöne Grüße,
Emu
Hallo Emu,


ACCESS erfordert glaube ich die Einhaltung der 8.3-Regel- max. 8 Buchstaben fuer den namen und max. 3 fuer die Extension -, auch wenn du eine Datei mit einem Namen laenger als 8 Buchstaben im Dateidialog auswaehlen kannst.

Gruss

Uwe.lange(at)db-gis.de
Hallo!

Wenn ich die Database Access-Extension geladen habe, das obige Script kompiliere und die Fehlermeldung "Unbekanntes Objekt: ODBCConnection" kommt, was hab ich denn dann schon wieder falsch gemacht??

Silke
Hallo Silke,

vielleicht funktioniert das Skript einfacher, wenn du eine SQL-Connection (SQLCon) verwendest. Siehe andere Datenbank-Diskussion.

Gruss

Uwe