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 :

UNION multiples (ODBC/ORACLE) qui plante


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 UNION multiples (ODBC/ORACLE) qui plante
    Bonjour,
    j'ai une requête à UNION multiples avec laquelle j'interroge via ODBC une base ORACLE.
    Jusqu'à 6 UNION ça marche.
    A parir de 7, ça plante (Ressources systeme inssufisantes me dit access).
    Par contre, quand je la récupère et l'execute directement dans PL/SQL ça marche bien.
    Y-a-t-il une limte à ce genre de chose dans Access.
    Merci
    Laurent

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Pas que je saches mais ça représente combien d'enregistrements ? Quel volume de données ?

    Si tu le fais en 2 passes :
    6 unions -> Table access
    Table access + 7ième unions
    ça fonctionne ?

    A+

  3. #3
    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
    Merci de ton retour,

    En fait ce n'est pas le nombre d'unions qui est en cause, car parfois 7 ça passe, ça semble plutot être un nombre de lignes de codes ?

    Je peux bien sur passer en plusieurs fois, ça règlerait le problème.

    Le nombre d'enregistrements renvoyés est faible (<1000).

    Le nombre de lignes de codes SQL est assez important.
    Pour chaque union, on a une dizaine de lignes de code + un critère prenant de 1 à +100 valeurs.

    Le problème peut il venir de ma variable "strsql" qui va stocker le code SQL d'interrogation ?

    Le 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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    'Variables
    Dim db As Database
    Dim rs, rs2 As Recordset ‘pour remplir la table SQL_TRACKING avec le code SQL
    Dim strsql As Variant
    Dim MaBase As Database
    Dim MaReq As QueryDef
    Dim MonRes As Recordset
    Dim c As Long
     
    Set db = CurrentDb
    Set MaBase = DBEngine(0)(0)
     
    'Suppression de l'ancienne requête SQL DIRECT si trouvée
    If ObjectExists("Query", "SQL_TRACKING_DEF") Then
        DoCmd.DeleteObject acQuery, "SQL_TRACKING_DEF"
    End If
     
    'Vidage de la table temporaire d'importation, qui stockera les données renvoyées par Oracle
    If ObjectExists("Table", "T_TRACKING_TMP") Then
        db.Execute "delete * from T_TRACKING_TMP"
    End If
     
    'Définition du profil de Connexion
    Set MaReq = MaBase.CreateQueryDef("SQL_TRACKING_DEF")
    MaReq.Connect = "ODBC;DRIVER=Microsoft ODBC for Oracle;UID= " & zuid & ";PWD=" & zPwd & ";SERVER=" & zserver
     
    db.Execute "delete * from SQL_TRACKING" 'table où on va empiler le code SQL
     
    MaReq.SQL = strsql
     
    'Interrogation d'ORACLE et récupération des données dans la table temporaire
    MaReq.ReturnsRecords = True
    DoCmd.OpenQuery "RCREA T_TRACKING_TMP"
     
    'Fermeture
    MaBase.Close
    Set MaReq = Nothing
    Set MonRes = Nothing
    Set MaBase = Nothing
    nb: RCREA T_TRACKING_TMP = SELECT SQL_TRACKING_DEF.* INTO T_TRACKING_TMP
    FROM SQL_TRACKING_DEF;

Discussions similaires

  1. Requête UNION qui plante
    Par DiverSIG dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/06/2014, 16h45
  2. Différence entre drivers ODBC Oracle
    Par snoopy69 dans le forum Oracle
    Réponses: 4
    Dernier message: 24/02/2005, 14h27
  3. [JTextArea] redessin qui plante
    Par phil_ma dans le forum Composants
    Réponses: 3
    Dernier message: 04/01/2005, 05h19
  4. Problème avec les paramètres date BDE/ODBC Oracle/XP Pro
    Par Bloon dans le forum Bases de données
    Réponses: 3
    Dernier message: 06/10/2004, 10h09
  5. [VB6] Connection ODBC Oracle
    Par babe dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/10/2002, 16h52

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