2013-05-15 5 views
0

Nous souhaitons donner aux utilisateurs de notre système la possibilité de faire glisser certaines données d'une base de données vers Excel. (Lecture uniquement des données, aucune chance d'écrire des données dans la base de données). Les utilisateurs n'ont pas d'accès direct à la base de données, donc nous aurions une certaine authentification pour eux en place. (Premièrement, pour se connecter à la base de données, mais aussi pour utiliser les paramètres de sécurité de notre système, afin que l'utilisateur 1 ne puisse voir que certaines tables.)Macro complémentaire C# vs macro VBA pour la fonctionnalité Excel

On m'a demandé de commencer à écrire un additif C# un collègue a été chargé d'écrire une macro VBA.

Je pensais utiliser Entity Framework pour accéder aux données, mais je n'ai jamais travaillé avec. Je ne sais pas ce qu'ils utiliseraient au sein de la macro, mais le macro-gestionnaire pense que je vais tuer le réseau avec le transfert de données lourd. Il n'aime pas non plus l'idée que les utilisateurs doivent installer le complément sur leurs ordinateurs. Cependant, j'ai un vague malaise concernant les macro et la notion qu'ils ne sont pas très sûrs. À quel point les macros sont-elles sécuritaires? Sont-ils en sécurité, ou un utilisateur averti pourrait-il changer le code?

Je voudrais savoir, quels sont les avantages et les inconvénients de chaque approche et quel est le sentiment général de personnes ayant plus d'expérience et de connaissances que moi-même?

En ce qui concerne notamment les questions telles que:

  • sécurité de l'information (. Certaines tables ne doivent pas ACCESSIBLES)
  • de trafic réseau
  • Facilité d'entretien et modifications futures
  • Toute autre préoccupation pertinente que j'ai raté

Cordialement,

+0

La sécurité réside sur le côté serveur non vba. Vous avez un accès privilégié aux utilisateurs côté serveur et les utilisateurs utilisent uniquement leurs informations d'identification pour se connecter à la base de données via vba. Pas de risque d'effraction ... écrivez une macro pour vous connecter à db et récupérez le jeu d'enregistrements et si vous avez toujours un problème avec votre 'code', revenez et postez ici - votre question risque d'être close. –

Répondre

0

Ce que je ferais dans une situation comme celle-ci est: -Créer des vues sur la base de données et les affecter à un schéma. Ne pas restreindre les données, il suffit de spécifier les colonnes que vous voulez voir, laissez-les filtrer les données dans Excel (en supposant que c'est une quantité massive de données retournées) -Créer un groupe Active Directory et donner aux membres de l'accès en lecture à cette schéma -Utilisez l'Excel -> Données -> Connexions (Il est dans Excel 2010, pas sûr de 2008) pour connecter les feuilles de calcul à cette Voir

Ils peuvent rater les données dans Excel, mais il ne peut pas être écrit retour à la base de données. Et vous pouvez restreindre les tables/colonnes qu'ils peuvent voir et effectuer les jointures pour les tables de recherche dans la vue afin qu'elles ne voient pas les identifiants de base de données.

+0

Oui, c'est une bonne idée. Cependant, ce n'est pas ce que nous cherchons. Notre situation est beaucoup plus complexe. Parfois, un certain utilisateur devrait être capable d'afficher une certaine table, mais pas tous les enregistrements de la table. Ceci est accompli par une procédure stockée qui vérifie quels enregistrements un utilisateur peut voir, mais ce n'est pas statique, ce n'est pas aussi simple qu'une vérification unique. Donc, je ne peux pas créer une vue pour chaque scénario imaginable qui pourrait apparaître. Les utilisateurs ne sont pas techniques, s'ils étaient, ils pourraient glisser des données dans Excel par eux-mêmes (s'ils avaient le nom d'utilisateur et le mot de passe DB). – Igavshne