Frage

Ich schaudere bei der Frage, aber mein Kunde bietet möglicherweise keine andere SQL-Lösung (oder eine SQL-ähnliche Lösung) an.Ich weiß, dass Access einige SQL-Hooks hat;Reichen sie für einfaches ActiveRecord?

Später:

Ich schätze alle Vorschläge zur Verwendung anderer Datenbanken, aber vertrauen Sie mir:Ich habe versucht, sie zu überzeugen.Es gibt eine „Genehmigt“-Liste, in der sich keine SQL-Datenbanken befinden.Es könnte mehr als ein Jahr dauern, etwas auf die Liste zu setzen, und dieses Projekt wird in drei Wochen abgeschlossen sein.

War es hilfreich?

Lösung

Es ist ein langer Weg, aber es gibt einen ODBC-Adapter für ActiveRecord das könnte funktionieren.

Andere Tipps

Hier scheint es so etwas wie einen Access-Verbindungsadapter zu geben: http://svn.behindlogic.com/public/rails/activerecord/lib/active_record/connection_adapters/msaccess_adapter.rb

Die Datei „database.yml“ würde so aussehen:

development:
  adapter: msaccess
  database: C:\path\to\access_file.mdb

Ich werde mehr posten, nachdem ich es mit Rails 2.1 ausprobiert habe

Eine andere Option, die komplizierter ist, aber funktionieren könnte, wenn Sie dazu gezwungen würden, besteht darin, eine Schicht von RESTful-Webdiensten zu schreiben, die Access für Rails verfügbar machen.Wenn Sie bei Ihrem Design vorsichtig sind, können diese RESTful-Webdienste direkt von ActiveResoure genutzt werden, wodurch Sie einen Großteil der Funktionalität von ActiveRecord erhalten.

Es gibt einige seltsame Dinge in Access, die Probleme verursachen können, und ich weiß nicht, ob ODBC sich darum kümmert.Wenn ja, hat @John Topley recht, ODBC wäre Ihre einzige Chance.

  1. Wahr bei Zugriff = -1, nicht 1
  2. Access behandelt Datumsangaben anders als normales TSQL.
  3. Beim Aufbau von Beziehungen könnte es zu Problemen kommen.

Wenn Sie sich für den Zugriff entscheiden, werden Sie wahrscheinlich mehr über das Debuggen von AcriveRecord erfahren, als Sie sich jemals interessiert haben (was vielleicht keine schlechte Sache ist).

Maudite schrieb:

Wahr bei Zugriff = -1, nicht 1

Nicht richtig.Wahr ist definiert als nicht falsch.Wenn Sie also True in einer WHERE-Klausel verwenden möchten, verwenden Sie stattdessen Not False.Dadurch wird eine vollständige plattformübergreifende Kompatibilität mit allen SQL-Engines gewährleistet.

Alles in allem stellt dies kaum ein Problem dar, da der Treiber, den Sie für die Verbindung zu Ihrem Back-End verwenden, „True“ in WHERE-Klauseln ordnungsgemäß in den entsprechenden Wert übersetzt.Die einzige Ausnahme könnten Passthrough-Abfragen sein, aber in diesem Fall sollten Sie die SQL außerhalb von Access schreiben und sie mit Ihrem Back-End testen und einfach die funktionierende SQL in die SQL-Ansicht Ihrer Passthrough-Abfrage in Access einfügen.

Maudite schrieb:

Access behandelt Datumsangaben anders als normales TSQL.

Auch dies wird nur dann ein Problem sein, wenn Sie nicht die ODBC- oder OLEDB-Treiber verwenden, die die Übersetzung von Jet SQL in TSQL für Sie übernehmen.

Maudite schrieb:

Beim Aufbau von Beziehungen könnte es zu Problemen kommen.

Ich bin mir nicht sicher, warum Sie möchten, dass eine Access-Anwendung das Schema Ihres Back-Ends ändert, daher scheint dies für mich kein Problem zu sein.

Sie sollten sie wirklich überreden, SQLite zuzulassen.Es lässt sich ganz einfach einrichten und funktioniert wie Access (als Datei, die sich neben der App auf demselben Server befindet).

Erstens Sie Wirklich Ich möchte SQLite verwenden.

Meiner Erfahrung nach ist Access selbst ein Haufen [geschwärzt], aber die verwendete Jet-Datenbank-Engine ist tatsächlich ziemlich schnell und kann einige ziemlich komplexe SQL-Abfragen verarbeiten.Wenn Sie einen Schienenadapter finden, der tatsächlich funktioniert, würde ich sagen, dass alles in Ordnung ist.Öffnen Sie die Datenbank einfach nicht mit dem Access-Frontend, während Ihre Rails-App läuft :-)

Wenn Ihr Kunde so anal ist, dass er Ihnen die Entwicklung nur mit einer genehmigten Liste von Datenbanken erlaubt, macht er sich darüber vielleicht mehr Sorgen Jet ist veraltet und werde von MS keine Unterstützung mehr bekommen.

Dies könnte Ihnen bei Ihrem Bestreben, eine echte Datenbank zu verwenden, etwas Munition liefern.Viel Glück

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top