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

InterBase Discussion :

Appeler une procédure stockée depuis Excel/VBA


Sujet :

InterBase

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 31
    Points : 21
    Points
    21
    Par défaut Appeler une procédure stockée depuis Excel/VBA
    Bonjour à tous,

    Je m'adresse à vous car les pros de VBA n'ont pas su répondre à mon problème, et moi encore moins !

    Afin de mettre à jour un classeur Excel, je cherche à prendre des informations contenues sur une base de données Interbase (*.gdb).

    Pour cela on m'a fournit "SQL Manager 2005 for Interbase and Firebird" dont je me suis servie pour créer ma requête, et même l'enregistrer comme une procédure stockée.

    Maintenant je bloque à pouvoir appeler cette procédure depuis VBA / Excel ou par un autre moyen si il le faut. Pouvez-vous m'éclairer ?

    En espérant avoir été suffisamment claire et en vous remerciant par avance,
    Nimy.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Un petit morceau de code que j'utilise avec une base Oracle, mais qui devrait fonctionner avec toute connexion ODBC...
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Private sub ODBC_Exec(DSN As String, CmdName As Sstring)
        Dim ODBC_Cmd As ADODB.Command
        Dim ODBC_Cnx As ADODB.Connection
        ' Ouvrir la connexion à la base
        On Error GoTo NotOpen
        Set ODBC_Cnx = New ADODB.Connection
        Set ODBC_Cmd = New ADODB.Command
        ODBC_Cnx.Open "Provider=MSDASQL;DSN=" & DSN
        If ODBC_Cnx.State = adStateOpen Then
            ' Préparer l'objet Commande
            On Error GoTo ErrCmd
            With ODBC_Cmd
                .ActiveConnection = ODBC_Cnx
                .CommandType = adCmdText
                .CommandText = CmdName
                ' Exécuter la commande
                .Execute
            End With
        End If
        GoTo EndSub
    NotOpen:
        ErrMsg "Connexion à la base", ODBC_Cnx.ConnectionString
        GoTo EndSub
    ErrCmd:
        ErrMsg "Commande non exécutée", ODBC_Cmd.CommandText
    EndSub:
        ODBC_Cnx.Close
        ODBC_Cmd.Close
        Set ODBC_Cmd = Nothing
        Set ODBC_Cnx = Nothing
        Err.Clear
    End Sub
    L'objet ADODB.Command a une collection PARAMETERS pour y stocker les valeurs de paramètres si nécessaire
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 31
    Points : 21
    Points
    21
    Par défaut
    Merci de t'intéresser à mon problème, je t'avoue être largement larguée sur ce coup-là. De mon côté en continuant à chercher j'ai trouvé ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim adoConn As New ADODB.Connection
     
    adoConn.ConnectionString = "provider=sibprovider;location=localhost:;data source=c:\databases\gdbs\mygdb.gdb;user id=SYSDBA;Password=masterkey"
     
    adoConn.Open
    Mais il me répond : "Erreur d'exécution 3706, impossible de trouver le fournisseur, il est peut-être mal installé."

    Je suppose que c'est "provider" qui est mal renseigné, mais que mettre à la place?


    PS : je m'attelle à comprendre ton code pour voir si j'arrive à l'adapter à mon cas.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Le provider MSDASQL est celui de ODBC.
    Il faut créer un DataSourceName dans l'administrateur ODBC, qui pointe sur ta base de données.
    Le paramètre DSN de la procédure est le nom de ce DSN.
    Le paramètre CmdName est le texte de la commande que tu exécutes sous ton SGBD.
    Si ta commande SQL retourne des données (SELECT ?), ADODB.Command retourne les données dans un ADODB.Recordset
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 31
    Points : 21
    Points
    21
    Par défaut
    Finalement j'ai réussi à accéder à cette base de données !!

    Un des informaticiens de la boite m'a créé un lien ODBC vers la BdD et j'utilise désormais des codes du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Sub testSQL2()
    Dim adoConn As New ADODB.Connection, rst As New ADODB.Recordset, fld As ADODB.Field
     
    adoConn.ConnectionString = "DSN=STEP_UAP_COLL;Driver=OdbcJdbc;Dbname=192.9.200.237:D:\bgsoft\Data\DBStep.gdb;CHARSET=ISO8859_1;UID=ODBC;"
     
    adoConn.Open
     
        ' Ouverture du Recordset en défilement en avant, et en lecture seule
     
    rst.Open "SELECT MATRICULE, NOM_COMPLET FROM OPERATEURS", adoConn, adOpenForwardOnly, adLockReadOnly
     
    Worksheets("Stockage").Range("A:H").Clear
    rst.MoveFirst
    Worksheets("Stockage").Range("A1").CopyFromRecordset rst
    rst.Close
     
    End Sub

    On sait jamais, ça peut servir à quelqu'un !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2008R2] Appeler une procédure stockée depuis une application C# Windows Form.
    Par thomas1989 dans le forum Développement
    Réponses: 17
    Dernier message: 04/10/2013, 16h33
  2. Réponses: 4
    Dernier message: 24/09/2013, 21h14
  3. Appeler une procédure stockée depuis une fonction
    Par FMJ dans le forum Développement
    Réponses: 4
    Dernier message: 07/04/2009, 21h04
  4. Réponses: 3
    Dernier message: 30/12/2008, 09h33
  5. Réponses: 4
    Dernier message: 26/04/2007, 09h03

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