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

Requêtes et SQL. Discussion :

Problème ODBC Connect SQL DIRECT


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 344
    Points : 104
    Points
    104
    Par défaut Problème ODBC Connect SQL DIRECT
    Bonjour,
    Je cherche interroger une base centrale ORACLE via SQl DIRECT et récupérer des données dans ma base Access et je débute à ce niveau, j'ai regardé pas mal de posts et essayé plusieurs bouts de codes comme celui ci-dessous qui marche bien, mais de manière limitée.

    Mon code :
    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
    Private Sub brsql_Click()
     
    Dim MaBase As Database
    Dim MaReq As QueryDef
    Dim MonRes As Recordset
     
    Set MaBase = DBEngine(0)(0)
     
    'DoCmd.DeleteObject acQuery, "mareq"
     
    Set MaReq = MaBase.CreateQueryDef("MaReq")
     
    MaReq.Connect = "ODBC;DSN=CONNECT_LARA"
    MaReq.sql = "select * from con_tracking where container_number = 'CMAU1430211'" 
    'la requête finale sera bcp plus complexe avec des paramètres
     
    MaReq.ODBCTimeout = 300
    MaReq.ReturnsRecords = True
     
    Set MonRes = MaBase.OpenRecordset("MaReq")
    MonRes.MoveLast
    MsgBox (MonRes.RecordCount) 'à terme il y aura ici un traitement
     
    MonRes.Close
    MaBase.Close
     
    DoCmd.DeleteObject acQuery, "mareq"
    Ca marche très bien, la premiere fois, parfois la seconde mais par ex si je ferme mon formulaire et le ré-ouvre, ça plante.
    J'ai bien créé au départ mon DSN et lors de la connection, je saisis mon login et mon pwd, je souhaite que ça reste ainsi et donc pas défini dans le code.

    Mais au bout d'un certain nombre d'execution, parfois des la seconde, ça plante avec ce message :

    Erreur d'execution 3146
    ODBC - l'appel a échoué

    Savez vous pourquoi ?
    Y a t il moyen de couper le connect une fois les données rapatriées dans ma base access afin de repartir avec un nouveau connect ?

    Merci
    Laurent

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

    Informations forums :
    Inscription : Février 2007
    Messages : 344
    Points : 104
    Points
    104
    Par défaut
    En fait quand ça plante et que je vais manuellement executyer la requête SQL DIRECT générée, j'ai un message du genre
    ODBC l'appel a échoué
    Microsoft ODBC driver for oracle ORA 01012 ; not logged on #1012

    ??

  3. #3
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 920
    Points : 4 828
    Points
    4 828
    Par défaut
    Bonjour,
    Est-ce que ça améliore si tu libères tes objets de la procédure (ce qui est toujours recommendable) ,

    Ajouter avant de sortir du Sub :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Set MaReq = nothing
    'mais aussi
    set monres = nothing
    set maBase=nothing

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

    Informations forums :
    Inscription : Février 2007
    Messages : 344
    Points : 104
    Points
    104
    Par défaut
    Salut et merci de m'avoir répondu,

    Hélas ça ne marche pas mieux

    Tentatives 1 à 3 toutes les 10 secondes, ça va, à la quatrième ça plante sur
    l'instruction openrecordset, et quand je vais executer manuellement mon objet "Mareq", ça me dit que je ne suis plus loggé, j'ai l'impression de me faire jeter intempestivement.

    Ensuite j'ai essayé en executant plus rapidement, du genre toutes les deux secondes et là, j'ai réussi au moins 10 executions, donc ça ne semble pas être un pb de nb d'executions.

    Et tant que je ne resors pas de l'appli Access, ça ne me redemande pas de me logger sur le serveur et donc ça ne marche plus.

    Par contre si je quitte Access et rentre à nouveau dans l'appli, cette fois ça me redemande de me logger et après, bis repetita, plantage au bout de quelques tentatives.

    Idealement il faudrait que je puisse clore la connection apres chaque execution et qu'a chaque nouvelle ouverture, ça me rouvre un fenetre de connection "Microsoft ODBC for Oracle connect", où je saisi mon login et pwd, inutile de garder la connection ouverte une fois que j'ai récupéré mes données Oracle dans Access.

    Merci en tout cas, je continue de chercher de mon coté.

    Laurent

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 344
    Points : 104
    Points
    104
    Par défaut
    Sans passer par un DSN, ça à l'air de mieux marcher, ça implique de saisir son login et son pwd à chaque fois mais je préfère.
    J'ai juste changé ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaReq.Connect = "ODBC;DRIVER=Microsoft ODBC for Oracle;SERVER=LARA"

    Laurent

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 344
    Points : 104
    Points
    104
    Par défaut
    Est-ce que quelqu'un aurait néanmoins une idée sur la raison qui fait que quand je n'indique pas mon UID+PWD dans ma chaine connect et donc les saisis à chaque connection, ça marche parfaitement ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaReq.Connect = "ODBC;DRIVER=Microsoft ODBC for Oracle;SERVER=LARA"
    Mais quand je les mets par défaut dans ma chaine connect, donc en plus de ce qui est indiqué ci-dessus, ça marche mais je me fait rapidement killer car on me dit que je ne suis plus loggé au bout de quelques tentetives/connections ?

    Merci pour vos avis,

    Laurent

Discussions similaires

  1. Problème de connection à SQL Server
    Par LJL51 dans le forum Accès aux données
    Réponses: 3
    Dernier message: 29/07/2008, 14h04
  2. Problème de connection SQL
    Par Poussy-Puce dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 22/04/2008, 16h44
  3. Problème de connection SQL après déploiement sur IIS
    Par Beaveroli dans le forum Général Dotnet
    Réponses: 7
    Dernier message: 24/05/2007, 10h12
  4. Réponses: 4
    Dernier message: 17/10/2006, 15h42
  5. Problème de connection à SQL Server
    Par wsangli dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 12/08/2005, 17h19

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