Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/11/2010, 13h47   #1
Membre du Club
 
Inscription : février 2007
Messages : 286
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 286
Points : 64
Points : 64
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
lbar012001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2010, 18h58   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 440
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 440
Points : 7 508
Points : 7 508
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+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 09h21   #3
Membre du Club
 
Inscription : février 2007
Messages : 286
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 286
Points : 64
Points : 64
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 :
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;
lbar012001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h24.


 
 
 
 
Partenaires

Hébergement Web