Question MS Access 2003 contient-il une console SQL à usage général?


Je sais que vous pouvez ouvrir une console SQL dans Access lors de la création d'une requête ou d'une vue, mais existe-t-il une console «tout usage» qui me permettrait d'exécuter des instructions telles que:

CREATE TABLE Foo
(
Foo_Id int NOT NULL,
Name varchar(255) NOT NULL,
CONSTRAINT pk_FooID PRIMARY KEY (Foo_Id,Name)
)

4
2017-11-13 18:35


origine




Réponses:


Je ne sais pas ce que vous entendez par «console polyvalente», mais peut-être que dans Access, c'est la fenêtre immédiate qui répondra à vos besoins. Si vous appuyez sur Ctrl-G sur le clavier depuis la fenêtre d'accès principale, cela vous amènera à la fenêtre Immédiat dans le VBE et vous pourrez y saisir:

  CurrentDB.Execute "CREATE TABLE Foo (Foo_Id int NOT NULL, Name varchar(255) NOT NULL, CONSTRAINT pk_FooID PRIMARY KEY (Foo_Id,Name))"

Il s'agit d'une interface à une seule ligne, donc pas de formatage SQL, mais il exécutera le SQL.

Le problème avec l'utilisation de CurrentDB en tant qu'objet d'exécution est qu'il renvoie un nouvel objet de base de données chaque fois que vous l'appelez (pour vous assurer que toutes ses collections sont à jour). Une alternative serait:

  DBEngine(0)(0).Execute "CREATE TABLE Foo (Foo_Id int NOT NULL, Name varchar(255) NOT NULL, CONSTRAINT pk_FooID PRIMARY KEY (Foo_Id,Name))"

Puisque DBEngine (0) (0) retourne toujours le même objet, vous pouvez alors vérifier des choses comme:

  DBEngine(0)(0).RecordsAffected

Le problème est que si vous modifiez les collections de la base de données, vous devez vous rappeler de les actualiser avant de les utiliser. Par exemple, si vous ajoutez ou supprimez une table, vous devez actualiser la collection TableDefs pour la mettre à jour:

  DBEngine(0)(0).TableDefs.Refresh

Une autre alternative serait d'utiliser un objet de base de données en cache, comme je le fais dans toutes mes applications, mais cela n'évite pas le problème de rafraîchissement des collections, mais facilite simplement la saisie (je trouve que DBEngine (0) (0) assez sujet aux erreurs, et trouve ma fonction dbLocal beaucoup plus facile à utiliser).


7
2017-11-13 19:48



Je suis familier avec vba et la fenêtre immédiate, mais je cherchais une console simple qui faisait partie du client. Quelque chose comme l'éditeur SQL pour une requête, mais non lié aux instructions SQL, définit les requêtes. J'envisage d'écrire un simple formulaire qui me permettra de le faire, mais je ne voulais pas le faire s'il existait déjà. - DaveParillo
D'autres personnes l'ont déjà fait (j'en ai vu des annonces), bien que ce soit quelque chose que je n'ai jamais suivi car je n'en ai pas besoin. Je ne sais pas comment vous l'avez Google, malheureusement. - David W. Fenton
Si vous trouvez des utilitaires que vous aimez, pourquoi ne les renvoyez-vous pas et dites-nous ce que vous avez aimé. - David W. Fenton
Quelle est la surcharge lorsque currentDb renvoie l'objet de base de données? - Nick
Frais généraux à quel égard? CurrentDB actualise les collections et renvoie une copie de l'objet de base de données. DBEngine (0) (0) n'actualise pas les collections et renvoie le pointeur de base d'Access sur la base de données actuellement ouverte dans l'interface utilisateur, plutôt qu'une copie de celle-ci. Ce dernier peut, dans de très rares circonstances (comme après avoir exécuté un assistant), renvoyer un pointeur sur quelque chose utilisateur voit que la base de données actuellement ouverte dans l'interface utilisateur. CurrentDB n'a jamais ce problème. CurrentDB est la méthode recommandée depuis la mise en service de A97. - David W. Fenton


Ouvrez la vue de conception dans l'objet de base de données des requêtes. Fermez le forum Show Table, puis cliquez avec le bouton droit de la souris dans la zone vide en haut de la fenêtre, sous les barres d'outils. Sélectionnez la vue SQL. Cela vous donnera un endroit où vous pouvez exécuter des requêtes SQL. Utilisez le "Run!" de la barre d'outils.

Cette vue est conçue pour que vous puissiez créer et enregistrer des requêtes, mais vous n’avez pas à le faire.


3
2018-04-04 21:50





Je ne crois pas qu'Access ait jamais été pensé comme étant utilisé pour une utilisation SQL à des fins générales, comme la création de tables, etc. Vous ne pouvez même pas utiliser les procédures stockées comme vous le feriez sur un serveur SQL classique. Je pense que vous allez vous sentir frustré si vous commencez à utiliser Access sans utiliser Visual Designer.

Bonne chance!


1
2017-11-13 21:25



Je pense que vous avez probablement raison! Je voudrais vraiment avoir un simple «bloc-notes» que je peux utiliser pour jouer avec des idées. Je suppose que je vieillis, mais la quantité de clics et de souris que vous devez supporter pour accomplir les tâches les plus élémentaires dans Access est ahurissante. - DaveParillo


L'utilisation d'un ADP pour se connecter à SQL Server peut vous donner ce que vous voulez. Cependant, je ne sais pas dans quelle mesure Access 2003 vous permet de créer des vues et des procédures stockées dans SQL Server 2005 ou 2008, telles qu'elles ont été publiées après A2003.


0
2017-11-28 00:03



Merci. Avez-vous des documents / liens? Je sais qu'Access 2003 ne prend pas en charge les procédures stockées. Je pense que l'hypothèse est que les «procédures stockées» seraient implémentées dans l'IDE VBA. - DaveParillo