Question

Je frémis avant de demander, mais mon client pourrait ne proposer aucune autre solution SQL (ou de type SQL).Je sais qu'Access a quelques hooks SQL ;sont-ils suffisants pour ActiveRecord de base ?

Plus tard:

J'apprécie toutes les suggestions pour utiliser d'autres bases de données, mais croyez-moi :J'ai essayé de les convaincre.Il existe une liste "approuvée" et aucune base de données SQL n'y figure.Inscrire quelque chose sur la liste pourrait prendre plus d’un an, et ce projet sera réalisé en trois semaines.

Était-ce utile?

La solution

C'est loin mais il y a un Adaptateur ODBC pour ActiveRecord ça pourrait marcher.

Autres conseils

Il semble y avoir ici une sorte d'adaptateur de connexion Access : http://svn.behindlogic.com/public/rails/activerecord/lib/active_record/connection_adapters/msaccess_adapter.rb

Le fichier database.yml ressemblerait à ceci :

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

Je posterai plus après l'avoir essayé avec Rails 2.1

Une autre option, plus compliquée mais qui pourrait fonctionner si vous étiez obligé de le faire, consiste à écrire une couche de services Web RESTful qui exposera Access aux rails.Si vous faites attention à votre conception, ces services Web RESTful peuvent être consommés directement par ActiveResoure, ce qui vous offrira de nombreuses fonctionnalités d'ActiveRecord.

Il y a des choses étranges dans Access qui pourraient causer des problèmes et je ne sais pas si ODBC s'en charge.Si c'est le cas, @John Topley a raison, ODBC serait votre seule chance.

  1. Vrai en accès = -1 et non 1
  2. Access traite les dates différemment du TSQL standard.
  3. Vous pourriez avoir du mal à créer des relations.

Si vous optez pour l'accès, vous en apprendrez probablement plus sur le débogage d'AcriveRecord que vous ne l'avez jamais fait (ce qui n'est peut-être pas une mauvaise chose)

Maudite a écrit :

Vrai en accès = -1 et non 1

Pas correcte.Vrai est défini comme n’étant pas faux.Donc, si vous souhaitez utiliser True dans une clause WHERE, utilisez plutôt Not False.Cela fournira une compatibilité multiplateforme complète avec tous les moteurs SQL.

Cela dit, ce n'est pas vraiment un problème, puisque quel que soit le pilote que vous utilisez pour vous connecter à votre back-end, il traduira correctement les clauses True in WHERE à la valeur appropriée.La seule exception pourrait concerner les requêtes passthrough, mais dans ce cas, vous devez écrire le SQL en dehors d'Access et le tester sur votre back-end et simplement coller le SQL de travail dans la vue SQL de votre requête passthrough dans Access.

Maudite a écrit :

Access traite les dates différemment du TSQL standard.

Encore une fois, cela ne posera problème que si vous ne passez pas par les pilotes ODBC ou OLEDB, qui se chargeront de traduire Jet SQL en TSQL pour vous.

Maudite a écrit :

Vous pourriez avoir du mal à créer des relations.

Je ne sais pas pourquoi vous voudriez qu'une application Access modifie le schéma de votre back-end, donc cela me semble ne pas être un problème.

Vous devriez vraiment les convaincre d'autoriser SQLite.Il est très simple à configurer et fonctionne comme le ferait Access (comme un fichier placé à côté de l’application sur le même serveur).

Premièrement, vous vraiment je veux utiliser SQLite.

D'après mon expérience, Access lui-même est un tas de [expurgé], mais le moteur de base de données Jet qu'il utilise est en fait assez rapide et peut gérer des requêtes SQL assez complexes.Si vous pouvez trouver un adaptateur de rails qui fonctionne réellement, je dirais que tout ira bien.N'ouvrez simplement pas la base de données avec l'interface d'accès pendant que votre application Rails est en cours d'exécution :-)

Si votre client est suffisamment anal pour vous permettre de développer uniquement avec une liste de bases de données approuvées, il se peut qu'il soit davantage préoccupé par le fait que Jet est déprécié et ne recevra plus de support de MS.

Cela pourrait vous donner des munitions dans votre quête pour utiliser une vraie base de données.Bonne chance

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top