IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

4D Discussion :

Problème Connection 4D par DAO


Sujet :

4D

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Problème Connection 4D par DAO
    Bonjour,

    Je souhaite pouvoir par le biais d'une macro depuis excel pouvoir acceder à une base de données 4D afin d'y effectuer des requêtes SQL et de récupérer les résultats sur excel.

    La base de données se trouve sur serveur.

    J'ai installé le driver ODBC 4D, et paramétré ma base de données utilisateur via ce driver.
    Lorsque je crée une requête via query, la connection s'effectue correctement et je peux récupérer les résultats de ma requête dans un tableau croisé dynamique par exemple. Mais cela oblige à des manipulations, et dans un soucis d'automatisation, je pensais utiliser la technologie DAO, mais je butte sur l'ouverture du fichier.

    La synthaxe habituelle est la suivante :
    nomBD="\\serveur\.............\base.4DC"
    dbengine.workspace(0).opendatabase(nomdBD)

    Seulement, un message d'erreur m'indique que la base est utilisée, et que je ne peux y accéder.
    Y-a-t-il des instructions particulières à ajouter?

    Merci d'avance

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 86
    Points : 103
    Points
    103
    Par défaut
    Bonjour,

    Vous devez créer un CDaoWorkspace pour travailler ensuite dedans.
    http://msdn.microsoft.com/library/de...oworkspace.asp

    Je ne sais pas si votre exemple est complet.
    Si c'est le cas, il ne fournit le user et mot de passe à aucun moment.

    Ces caractéristiques éxistent dans le CDaoWorkspace.


    Cordialement

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Precisions
    Pardon, pour l'exposé de ma problématique.
    Ma macro est en VBA, et le code est le suivant :
    Pour info, il n'y a pas de mot de login et de mot de passe.
    J'ai une erreur, sur l'instruction en gras : erreur 3045 - fichier en cours d'utilisation.

    Sub testrecupdonnee()
    Dim WS As DAO.Workspace
    Dim BD As DAO.Database
    Dim RS As DAO.Recordset

    nomBD = "\\serveur2k\4D\Gesmag AJL 2.8 serveur\gesmag publicite 288S.4dC"

    Set WS = DBEngine.Workspaces(0)

    Set BD = WS.OpenDatabase(nomBD)

    req = "SELECT [Code Annonceur], sum([Montant HT])as CA"
    req = req & " FROM FACTURES WHERE [Code Annonceur]=" & [a14].Value
    req = req & " GROUP BY [Code Annonceur]"

    Set RS = BD.OpenRecordset(req)
    [b14] = RS![CA]

    End Sub

    J'éspère que ces précisions pourront vous aider à solutionner mon problème
    Merci d'avance

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 86
    Points : 103
    Points
    103
    Par défaut
    Bonjour,

    Voici quelques pistes:

    Par défaut, VBA ouvre un workspace de type jet.

    Pour ouvrir un workspace ODBC, il est nécessaire de l'instancier de cette façon:
    DefaultType = dbUseODBC
    Set WS = CreateWorkSpace("MyWspace","user","password",dbUseODBC)
    Set BD = WS.OpenDatabase(nomBD)

    Les informations ne manquent pas sur internet.
    http://www.avdf.com/may97/art_odbcdirect.html
    http://warin.developpez.com/access/dao/?page=partie_2

    Exemple:
    Dim wrkODBC As DAO.Workspace
    Dim conODBCDirect As DAO.Connection
    Dim rsODBCDirect As DAO.Recordset
    Dim strConn As String
    strConn = "ODBC;DATABASE=dbname;UID=username;PWD=password;DSN =dbname"
    Set wrkODBC = CreateWorkspace("", "admin", "", dbUseODBC)
    Set conODBCDirect = wrkODBC.OpenConnection("", , , strConn)
    SqlStr = "SELECT CHANNEL_ID, CHANNEL_NAME FROM CHANNEL"
    Set rsODBCDirect = conODBCDirect.OpenRecordset(SqlStr, dbOpenDynamic)

    http://www.dbforums.com/archive/index.php/t-955956.html

    Il est possible d'ouvrir des sources fichier, JET ou ODBC. Evidement, le mode opératoire n'est pas le même.

    Dans les exemples que j'ai trouvés, dbUseODBC est toujours associé à l'instanciation du workspace.
    C'est bien un CDAOWorkspace qu'il faut instancier, que ce soit en VBA ou en C++.
    La synthaxe change mais pas la techno.

    Cordialement

Discussions similaires

  1. Problème ouverture fichier par double clic...
    Par sankookai dans le forum MFC
    Réponses: 4
    Dernier message: 11/05/2005, 10h13
  2. [VS.NET] Problème connection Source safe
    Par Nip dans le forum EDI/Outils
    Réponses: 2
    Dernier message: 24/06/2004, 16h30
  3. [CR8.5] Problème de division par zéro sur formule
    Par franck.cvitrans dans le forum Formules
    Réponses: 3
    Dernier message: 10/06/2004, 14h41
  4. Probléme d'insertion par défault
    Par xavier62 dans le forum SQL
    Réponses: 7
    Dernier message: 28/11/2003, 14h03
  5. problème de connection mysql par tcp/ip
    Par leroyphil dans le forum Administration
    Réponses: 5
    Dernier message: 04/09/2003, 19h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo