2009-06-17 6 views
0

Je suis intéressé par la configuration d'une base de données Access pour exécuter automatiquement un rapport. Pour m'éviter d'avoir à aller sur chaque ordinateur client et à configurer les DSN appropriés, je souhaite configurer les connexions ODBC dans le script VB lui-même si possible.Comment puis-je me connecter à Lotus via ODBC en utilisant VBA?

J'ai recherché sur Google ce site et trouvé un bon code de démarrage, mais pas assez pour que tous les messages d'erreur disparaissent. Quelqu'un peut-il compléter le code ci-dessous?

Sub SetupODBC(Str_Server as string, Str_Db as string) 
'Str_Server=Name of Server 
'Str_db=Name of Database 
Dim C as ADODB.Connection 
Set C = new ADODB.Connection 
C.ConnectionString = ?? 
C.Open 
Debug.print C.State 
Exit Sub 
+0

Essayez-vous de vous connecter à partir d'Access to Lotus Notes ou de Lotus Notes à Access? Si c'est le premier, quel type de rapport générez-vous? Peut-être que vous pouvez le faire directement dans les notes en utilisant un agent programmé. – Carlos

Répondre

1

Bienvenue au conseil d'administration. ConnectionStrings est en effet votre ami, mais le problème que vous rencontrez est que vous n'avez pas le pilote :) Lotus Notes n'est pas une base de données relationnelle il s'agit d'un document oriented database. Historiquement, il n'y avait pas moyen d'y accéder comme si c'était une base de données relationnelle pour cette raison. Cependant IBM a fini par écrire une sorte de traducteur sous la forme de NotesSQL. Si vous suivez le lien et obtenez le pilote, vous devriez être en mesure d'utiliser ODBC. Il est à noter que Notes s'expose à COM. Donc, si la poussée vient à pousser, vous pouvez automatiser le client.

+0

Merci de nous l'expliquer plus en détail. – PowerUser

+0

Étiez-vous capable de faire avancer les choses après avoir DLd le pilote? – Oorang

+0

Oui, cela a fonctionné. Cependant, comme je devais installer le pilote sur toutes les machines clientes de toute façon, j'ai simplement fait les DSN manuellement pendant que j'étais là. Merci pour l'aide. – PowerUser

1

Ce site est votre ami: http://www.connectionstrings.com/access

Je n'ai pas suivi votre question au début. Je vois que vous voulez créer un lien depuis Access to Lotus pour générer des rapports sur les données Lotus Notes. Eh bien, il y a plusieurs façons de le faire.

J'utilise fréquemment une méthode d'exposition des données Lotus Notes au format XML, puis j'accède à ce code XML à partir du système distant. Vous pouvez facilement créer une page Notes avec la balise de début XML, élément racine, puis insérer une vue incorporée entre les éléments racine. Cette vue intégrée doit ensuite s'afficher au format HTML et contenir des colonnes qui se résolvent en balises xml. Par exemple, chaque ligne de la vue ressemblerait à ceci:

<Person><FirstName>Ken</FirstName><LastName>Pespisa</LastName></Person> 

et vos formules de colonne serait:

"<Person><FirstName>" + FirstName + "</FirstName>" 

pour la première colonne de nom, et pour la dernière colonne de nom, il serait ceci:

"<LastName> + LastName + </LastName></Person>" 

Notez que cela suppose que votre serveur notes a le service HTTP activé et vous pouvez accéder à la base de données via un navigateur.

Toutefois, comme mentionné par d'autres réponses, vous pouvez utiliser d'autres méthodes telles que NotesSQL et COM. Il semble que vous installiez cette solution sur de nombreuses stations de travail, et NotesSQL vous demanderait d'installer le pilote sur chaque poste de travail. La méthode COM fonctionnerait sans nécessiter de travail supplémentaire au niveau des bureaux des utilisateurs, donc je privilégierais cette solution dans ce cas.

0

On dirait un bon site pour mes besoins, même s'il n'a pas été mis à jour depuis un an. Mais toujours pas de cigare. Maintenant, je suis en train de « nom de la source de données introuvable et le pilote par défaut non spécifié »

(De toute évidence, ServerNameGoesHere et DatabaseNameGoesHere sont subsitutions)

Sub dbX() 
    Dim C As adodb.Connection 
    Set C = New adodb.Connection 
    C.Open _ 
     "Driver={Lotus NotesSQL 3.01 (32-bit) ODBC DRIVER (*.nsf)};" & _ 
     " Server=ServerNameGoesHere;" & _ 
     " Database=DatabaseNameGoesHere.nsf;" 
    C.Close 
End Sub 
+0

Quel type de rapport essayez-vous de créer? Il pourrait être plus facile de créer directement dans Lotus Notes. – Carlos

+0

Merci, mais je n'ai pas d'autorisations pour les outils de développement dans Lotus. J'essaie simplement de créer et de sauvegarder un fichier Excel, ce que j'ai déjà fait plusieurs fois avec VBA. Cependant, c'est la première fois que j'essaye de faire une connexion sans DSN. – PowerUser

Questions connexes