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

Access Discussion :

[ADO] Requête SQL dans Oracle à partir d'access


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Points : 11
    Points
    11
    Par défaut [ADO] Requête SQL dans Oracle à partir d'access
    Bonjour,
    J'essaye de créer une nouvelle ligne dans une table Oracle à partir d'une application Access 2003 en VBA.
    La table Oracle est utilisée par un logiciel commercial de gestion, dont l'éditeur nous a fournit des outils affin d'y acceder depuis un programme externe (procédures stockées, ouverture des tables en lecture et écriture). Jusqu'ici tout marche très bien et je peux me connecter et appeler des procédures stockées. Par contre je n'arrive pas a accéder directement aux tables (j'utilise du SQL mais peut être faut-il faire autrement). Peut être aussi tout simplement ma requête SQL est elle fausse. Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim strSQL As String
    strSQL = "INSERT INTO TARIFPARTICULIERGAMME (CODE1, CODE2, CODEGAMME1, CODEGAMME2, CODECOMPOGAMME1, CODECOMPOGAMME2, MODETARIF, PRIX)
    VALUES ('04FCHGUFLOFRA', 'MONT', 'T', 'C', 40, 'AN', 'U', 8)"
    mcmd.CommandText = strSQL
    mcmd.Execute
    La connexion est assurée par un module fourni par l'éditeur et qui fonctionne jusqu'à maintenant, je ne pense pas que le problème vienne de là donc, voici son code au cas où:

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    Private ODBC As Workspace
    Private Oracle As Connection
    Private bConnecteAOracle As Boolean
     
    Public stDocName As String
    Public stLinkCriteria As String
    Public madoConn As ADODB.Connection
    Public mcmd As ADODB.Command
    Public msConnectString As String
     
    Public Sub ConnectToOracle(Optional WithPrompt As Boolean = False)
        On Error GoTo Err_Connect
        bConnecteAOracle = False
     
        Dim dbDriver
        If WithPrompt = False Then
            dbDriver = dbDriverNoPrompt
        Else
            dbDriver = dbDriverPrompt
        End If
     
        msConnectString = "Provider=MSDAORA;Data Source=API_ALIAS;User ID=xxxxxxxxxxxxxxxxxx;Password=xxxxxxxxxxxxxxxxxx;"
        Set madoConn = New ADODB.Connection
        madoConn.ConnectionString = msConnectString
        madoConn.Open "", "", "", 0
     
        Set mcmd = New ADODB.Command
        Set mcmd.ActiveConnection = madoConn
     
        'Indique un traitement qui peut être long
        Call DoCmd.Hourglass(True)
     
        mcmd.CommandText = getDossier() & ".GES_APPEL_EXT.OPENSESSION"
        mcmd.CommandType = adCmdStoredProc
     
        mcmd.Parameters.Refresh
        mcmd.Parameters("User").Value = getLogin()
        mcmd.Parameters("Pwd").Value = getPassword()
     
        mcmd.Execute "", "", ADODB.adExecuteNoRecords
        Call DoCmd.Hourglass(False)
     
        bConnecteAOracle = True
     
    Exit_Connect:
        Exit Sub
     
    Err_Connect:
        Call DoCmd.Hourglass(False)
        bConnecteAOracle = False
        Resume Exit_Connect
    End Sub
    L'erreur renvoyée est: "Erreur de syntaxe dans {call...} ODBC Escape"
    J'espère avoir été assez clair dans mes explications
    Merci de votre aide!

  2. #2
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    J'ai essyé de rajouter un objet parameter, mais l'erreur est toujours la même

  3. #3
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    je ne comprends pas bien là...
    • Ton code s'exécute-t-il APRES que tu aies exécuté ConnectToOracle, et ceci dans une autre procédure ?
    • Si oui, sur quelle ligne y a-t-il l'erreur qui se manifeste ?
    • Quel est l'état de madoConn au moment de l'erreur ?
    • Quel est l'état de mcmd au moment de l'erreur ?
    • As-tu vérifié que le SQL que tu as créé est bien compatible avec Oracle (je ne m'étonnerai plus de rien moi...) en tentant de l'exécuter directement sur le serveur ?
    • L'utilisateur connecté a-t-il les droits pour accéder à cette ressource ?
    • L'utilisateur connecté a-t-il les droits pour faire cette opération ?

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Alors:
    -Oui le code s'exécute après avoir appellé la procédure ConnectToOracle.
    -l'erreur est sur mcmd.Execute
    -Pour l'état de mcmd, j'ai fait un ?mcmd.State dans la fenêtre de debug j'obtient 0.
    -Je vais essayer de l'executé directement (j'y avait pas pensé )
    -J'ai ouvert les tables Oracle à l'aide d'un utilitaire fournit par l'éditeur et dans la doc il est spécifié que l'on a alors les droits pour écrire dans les tables en étant connecté en invité (oui je sais pas très sécurisé tout ca...).

    Merci de ton aide, ca me donne des pistes auxquelles je n'avait pas pensé!

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Je suis toujours bloqué , mais j'ai avancé un peu quand même
    J'ai essayé diverses commande dans SQL*Plus, et les erreurs sont les mêmes que sous Access. Même un tout petit select ne passait pas. J'ai demandé la liste des tables pour vérifier et je pense que le problème viens de là. Explication: je ne sais pas vraiment comment fonctionne une BDD, toujours est-il que dans le logiciel de gestion on nous demande de choisir un dossier qui correspond à une entreprise. Ce dossier se retrouve dans Oracle et chaque dossier contient toutes les tables me concernant. Mais là, bien que ma procédure ConnectToOracle me place normalement dans le bon dossier, j'ai l'impression d'être à la racine d'Oracle, càd que je ne suis pas dans un dossier (quand je demande la liste des tables, j'obtient les 2 dossiers de mes 2 entreprises).

    A quoi correspondent ces "dossiers" dans Oracle? ce sont des tables contenant des tables? ou une base Oracle contient en fait plusieurs bases que je nomme moi "dossier"? Et surtout: dans SQL*Plus comment faire pour rentrer dans un "dossier"?

    Je suis un peu perdu , merci de votre aide!

Discussions similaires

  1. Importer Fichier.sql dans oracle
    Par sisiniya dans le forum Oracle
    Réponses: 5
    Dernier message: 24/05/2010, 20h14
  2. Exécution de plusieurs requêtes SQL dans Oracle
    Par 4rocky4 dans le forum PL/SQL
    Réponses: 7
    Dernier message: 19/03/2009, 11h12
  3. Insertion SQL dans oracle
    Par siimpatiico dans le forum Accès aux données
    Réponses: 1
    Dernier message: 15/02/2009, 16h50
  4. Import base .sql dans Oracle 10g Express ?
    Par slackuser dans le forum Débuter
    Réponses: 1
    Dernier message: 30/05/2008, 22h21

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