1 votes

Comparer le Tableur à la Base de données pour Générer un Document

Je tente de rationaliser la production d'un document qui doit être créé régulièrement. Il y a des tâches associées à des instructions détaillées sur la façon de les accomplir, et chacune d'entre elles a un numéro d'identification spécifique qui est réutilisé dans divers projets. J'ai rassemblé autant de ces identifiants de tâche que possible dans une base de données Access.
Pour chaque projet, quelqu'un d'autre extrait une liste de toutes les tâches requises d'une autre base de données à laquelle je n'ai pas accès et les place dans un classeur Excel selon un format standard. Pour chaque projet, je dois :

  • Importer toutes les tâches pertinentes par numéro d'identification
  • Les comparer à la liste standard dans ma base de données qui contient les étapes pour accomplir la tâche et quelques autres informations
  • Générer un document avec un format spécifique en utilisant les informations spécifiques sur les tâches

Rédiger une macro dans Excel semblait être beaucoup de travail, mais le meilleur choix, mais je ne peux pas être sûr que la base de données Access restera toujours à la même place où elle devrait être. Comme la base de données est l'élément constant dans tous les projets, j'ai pensé à écrire une macro dans Access et à avoir une boîte de dialogue demandant où se trouve le classeur fonctionnerait, mais utiliser un tableau pour comparer les deux listes semblait plus complexe que simplement générer une feuille de comparaison dans Excel. Je n'ai pas vraiment envisagé d'écrire une macro dans Word, même si c'est aussi une possibilité.

Je cherche la manière la plus logique de mettre en place cela. Utiliser 3 programmes de bureau différents semble assez alambiqué, mais je suis limité dans les logiciels disponibles pour accomplir cela :

  • Office 2007
  • Beyond Compare
  • Les autres programmes installés (je ne peux pas installer de logiciel supplémentaire) ne semblent pas du tout pertinents pour la tâche

Est-ce que quelqu'un a une idée de la façon de procéder ?

1voto

Njean Points 11

Si vous aviez Crystal Reports, vous pourriez joindre le tableau Excel aux tables Access; ensuite imprimez 2 rapports, un avec des données correspondant sur l'ID, et l'autre rapport pour répertorier les enregistrements sans correspondance d'ID. La mise en forme est géniale. J'écris des rapports où je joins des fichiers Excel à une base de données Oracle pour le reporting. Vous devriez pouvoir joindre le fichier Excel à ACCESS et créer le même type de rapports en supposant que les deux ont les champs d'ID à faire correspondre.

0voto

Anonono Points 71

Avez-vous envisagé d'utiliser une connexion ODBC pour lier les deux ensembles de données?

Résultats Google pour ODBC et Excel

Si votre environnement de travail natif est la base de données et que vous pouvez automatiser l'entrée de ces nouveaux champs de données, vous pouvez utiliser des requêtes simples pour sélectionner les données non appariées (nouvelles) et travailler à partir de là. C'est dommage que vous ne puissiez pas simplement sortir de la première base de données vers la vôtre, ou avoir le premier ensemble de données exporté simplement exporté dans un CSV de données nouvelles ou modifiées.

De chaque côté, vous pouvez ajouter les nouvelles données et les comparer avec les existantes (avec des requêtes dans Access ou un tableau croisé dynamique dans Excel). Si vous créez une nouvelle colonne/champ pour agir comme un simple indicateur booléen, vous pouvez différencier entre les ensembles de données et les fusionner dans le même tableau/document. Appliquez alternativement un code pour les importations hebdomadaires (ou tout autre période) afin que vous puissiez utiliser ce champ "d'indicateur" pour des requêtes futures.

Le tableau croisé dynamique serait mon premier choix, car vous pouvez travailler plus rapidement à l'étape de cadrage qu'avec des requêtes de base de données, et vous pouvez visualiser vos besoins de rapports/comparaisons dans une seule vue.

Si vous pouvez "laver" vos données pour les anonymiser, veuillez poster quelques exemples pour des solutions plus spécifiques.

0voto

SeanC Points 3579

Vous pouvez accéder aux données Excel en tant qu'enregistrement, ce qui permettra une comparaison facile

Dim xldb As New adodb.Connection
Dim xlcmd As New adodb.Command
Dim XL As New adodb.Recordset

With xldb
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .ConnectionString = "Data Source=" & FileName & ";Extended Properties=""Excel 12.0 Xml;HDR=YES;ReadOnly=True"";"
    .Open
End With

Set xlcmd.ActiveConnection = xldb
xlcmd.CommandType = adCmdText
xlcmd.CommandText = "Select * from [Sheet1$]"
XL.CursorLocation = adUseClient
XL.CursorType = adOpenDynamic
XL.LockType = adLockOptimistic
XL.Open xlcmd

maintenant vous pouvez utiliser l'enregistrement XL, rechercher la base de données et y placer les informations

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X