Requête SQL.

Requête SQL. - Programmation

Marsh Posté le 16-05-2002 à 09:15:37    

comment faire lorsqu'on veut créer une requête sous vba, mais que cette requête dépasse les 1024 caractères autorisées ???
 
merci


---------------
Music|Market|Feed|Loom|DVD
Reply

Marsh Posté le 16-05-2002 à 09:15:37   

Reply

Marsh Posté le 16-05-2002 à 09:16:34    

les 1024 caracteres autorises par koi ???

Reply

Marsh Posté le 16-05-2002 à 09:19:18    

HappyHarry a écrit a écrit :

les 1024 caracteres autorises par koi ???  




 
ben je sais pas, il me dit l'expression entrée dépasse la limite des 1024 caractères pour la grille de création...
 
ça vous dit qqchose ?


---------------
Music|Market|Feed|Loom|DVD
Reply

Marsh Posté le 16-05-2002 à 09:26:00    

tu fais koi exactement ?

Reply

Marsh Posté le 16-05-2002 à 09:30:25    

HappyHarry a écrit a écrit :

tu fais koi exactement ?  




 
ben en fait g une grosse requête sql bien immense, avec plein de iif, des jointures, des requêtes imbriquées, etc... mais on dirait qu'elle est trop grosse...
sans entrer dans le détail, voilà... y'a t'il moyen de remédier à cela ??


---------------
Music|Market|Feed|Loom|DVD
Reply

Marsh Posté le 16-05-2002 à 10:05:06    

Tu décomposes ta requête en plusieurs requêtes

Reply

Marsh Posté le 16-05-2002 à 10:09:33    

thegti a écrit a écrit :

Tu décomposes ta requête en plusieurs requêtes  




 
et je coupe à quel niveau ?  
 
et je les relie comment après ?? :??:


---------------
Music|Market|Feed|Loom|DVD
Reply

Marsh Posté le 16-05-2002 à 10:22:53    

:hello:  
 
j'imagine que tu fais ta requete dans l'assistant requete d'access en mode création ;)
 
et si tu la faisais directement en mode SQL ? je me souviens avoir tapé des requetes immenses sans aucun prob


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 16-05-2002 à 10:32:33    

Harkonnen a écrit a écrit :

:hello:  
 
j'imagine que tu fais ta requete dans l'assistant requete d'access en mode création ;)
 
et si tu la faisais directement en mode SQL ? je me souviens avoir tapé des requetes immenses sans aucun prob  




 
Harkonnen fidèle au poste !!
 
 
ben en fait je crée la requête sous vba en faisant un createquerydef, ms ça revient au mem paske après je suis allé la modifier en mode dsl et ca change rien
 
au fait g vérifié dans les restrictions d'access, et une requete sql peut faire 64000 caractères, donc c pas ça. il semblerait que ce soit au niveau du nombre de caractères dans une cellule de grille d'interrogation qui est limité à 1024, et c ça qui plante ! as tu une idée de ce que c'est ?


---------------
Music|Market|Feed|Loom|DVD
Reply

Marsh Posté le 16-05-2002 à 10:55:33    

la grille d'interrogation doit etre la grille qui te permet de faire une requete en mode création, en faisant glisser les champs de la table
 
c'est pour ça que tu devrais faire ta requete directement en mode SQL dans access je pense, à la mimine  :)


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 16-05-2002 à 10:55:33   

Reply

Marsh Posté le 16-05-2002 à 10:58:26    

Harkonnen a écrit a écrit :

la grille d'interrogation doit etre la grille qui te permet de faire une requete en mode création, en faisant glisser les champs de la table
 
c'est pour ça que tu devrais faire ta requete directement en mode SQL dans access je pense, à la mimine  :)  




 
ouais mais la actuellement je suis en mode sql, et ça ne marche pas mieux.
 
il faudrait que cette requete se fasse automatiquement en cliquant sur un bouton, c'est pour ça que je la fais par vba.
si je te montre la requête , tu peux trouver l'erreur potentielle ??


---------------
Music|Market|Feed|Loom|DVD
Reply

Marsh Posté le 16-05-2002 à 10:59:43    

envoie toujours


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 16-05-2002 à 11:06:11    

ok, surtout ne t'effraie pas ...!!  :D  
 
SELECT INCIDENT.date, nomSource, RUE.nomRue, QUARTIER_ELU.nomQuartierElu, QUARTIER.nomQuartier, catIncident, INCIDENT.description
FROM INCIDENT, QUARTIER_ELU, RUE, QUARTIER, SOURCE, CAT_INCIDENT
WHERE INCIDENT.numQuartierElu=QUARTIER_ELU.numQuartierElu AND SOURCE.numSource = 2^(chercheSelection(INCIDENT.numSource , 20)) AND INCIDENT.numRue= RUE.numRue AND INCIDENT.numQuartier=QUARTIER.numQuartier AND CAT_INCIDENT.catIncident = iif(INCIDENT.agression =0,iif(INCIDENT.vol =0,iif(INCIDENT.incendie =0 , iif(INCIDENT.dégradation =0,iif(INCIDENT.comportement =0,iif(INCIDENT.problèmes =0,iif(INCIDENT.regroupements =0,iif(INCIDENT.éclairage =0,SELECT catIncident FROM CAT_INCIDENT WHERE typeIncident = 9 AND numCatIncident = 2^chercheSelection(INCIDENT.divers, SELECT COUNT(*) FROM CAT_INCIDENT WHERE typeIncident=9) ,'Eclairage public';),SELECT catIncident FROM CAT_INCIDENT WHERE typeIncident = 7 AND numCatIncident = 2^chercheSelection(INCIDENT.regroupements, SELECT COUNT(*) FROM CAT_INCIDENT WHERE typeIncident=7)),SELECT catIncident FROM CAT_INCIDENT WHERE typeIncident = 6 AND numCatIncident = 2^chercheSelection(INCIDENT.problèmes, SELECT COUNT(*) FROM CAT_INCIDENT WHERE typeIncident=6)),SELECT catIncident FROM CAT_INCIDENT WHERE typeIncident = 5 AND numCatIncident = 2^chercheSelection(INCIDENT.problèmes, SELECT COUNT(*) FROM CAT_INCIDENT WHERE typeIncident=5)), SELECT catIncident FROM CAT_INCIDENT WHERE typeIncident = 4 AND numCatIncident = 2^chercheSelection(INCIDENT.dégradation, SELECT COUNT(*) FROM CAT_INCIDENT WHERE typeIncident=4)),SELECT catIncident FROM CAT_INCIDENT WHERE typeIncident = 3 AND numCatIncident = 2^chercheSelection(INCIDENT.incendie, SELECT COUNT(*) FROM CAT_INCIDENT WHERE typeIncident=3)),SELECT catIncident FROM CAT_INCIDENT WHERE typeIncident = 2 AND numCatIncident = 2^chercheSelection(INCIDENT.vol, SELECT COUNT(*) FROM CAT_INCIDENT WHERE typeIncident=2)),SELECT catIncident FROM CAT_INCIDENT WHERE typeIncident = 1 AND numCatIncident = 2^chercheSelection(INCIDENT.agression, SELECT COUNT(*) FROM CAT_INCIDENT WHERE typeIncident=1));
 
 
 
 
tu comprends mieux le pb ???? :lol:


---------------
Music|Market|Feed|Loom|DVD
Reply

Marsh Posté le 16-05-2002 à 11:08:14    

ouh putain........  :ouch:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 16-05-2002 à 11:10:09    

cette requete se "compile" normalement sous access, sans erreur ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 16-05-2002 à 11:12:34    

Harkonnen a écrit a écrit :

ouh putain........  :ouch:  




 
c pas de la requête de pd ça hein ??   :D  
stp soit gentil avec moi si je programme comme une merde !!  
 
 
SQL RULEZZZ  :sol:


---------------
Music|Market|Feed|Loom|DVD
Reply

Marsh Posté le 16-05-2002 à 11:14:17    

Harkonnen a écrit a écrit :

cette requete se "compile" normalement sous access, sans erreur ?  




 
 
qu'entends tu par se compile ?  
le module dans lequel je la crée passe ; lorsque je clique sur le bouton qui appelle la création de la requête ça marche, mais quand j'essaie d'obtenir les résultats ou de passer en mode création, ça plante...


---------------
Music|Market|Feed|Loom|DVD
Reply

Marsh Posté le 16-05-2002 à 11:19:37    

J'ai déjà eu le même problème, c limité Access
Faut décomposer la requêtes en plusieurs sous-requêtes.
Maintenant, vu la mauvaise tournure de ta requête, c'est pas gagné ;)

Reply

Marsh Posté le 16-05-2002 à 11:35:12    

je viens de tester, en remplaçant tes fonctions VB par des fonctions à moi, et ça pète aussi
 
donc, comme dit thegti, à mon avis le seul moyen est de diviser ta requete en sous requetes.
 
bon courage... si j'ai 5mn dans la journée j'essaierai de m'y coller, mais c'est pas gagné :(


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 16-05-2002 à 11:43:48    

Harkonnen a écrit a écrit :

je viens de tester, en remplaçant tes fonctions VB par des fonctions à moi, et ça pète aussi
 
donc, comme dit thegti, à mon avis le seul moyen est de diviser ta requete en sous requetes.
 
bon courage... si j'ai 5mn dans la journée j'essaierai de m'y coller, mais c'est pas gagné :(  




 
 
ok je veux bien la séparer en plusieurs requetes mais comment faire ? je coupe à quel niveau ? et comment je fais après pour n'avoir plus qu'une requete globale ?
 
merci qd meme de te prendre la tete pr ça  :jap:  :ange:


---------------
Music|Market|Feed|Loom|DVD
Reply

Marsh Posté le 16-05-2002 à 13:37:50    

up :bounce:


---------------
Music|Market|Feed|Loom|DVD
Reply

Marsh Posté le 16-05-2002 à 13:52:36    

kess que c que ce message d'erreur...  
 
"la fonction iif sans () dans l'expression iif(..... "
 
ça veut dire koi ?
c  la tout le pb...


---------------
Music|Market|Feed|Loom|DVD
Reply

Marsh Posté le 16-05-2002 à 14:09:14    

Je te l'ai déjà dis, le design de ta base est ... pas top !
 
Au lieu de multiplier les champs :
INCIDENT.agression
INCIDENT.vol
INCIDENT.incendie
...
 
Tu ferais mieux d'avoir une autre table, qui te donne la liste des types d'incident pour un INCIDENT, chaque type étant affecté d'un niveau de gravité, ce qui te permetrait de sélectionner directemment celui ayant le niveau le plus haut et qui te débarasserait de tous ces iif() qui font quand même pas très propre.
 
Comment tu va faire pour maintenir ton application le jour ou un utilisateur te pondra de nouveaux types d'incidents ?
 
C'est pas une question en l'air !
Tu peux être QUAZIEMENT certain que çà va arriver, même si on t'a jurré que çe n'est pas le cas...
 
Si t'as besoin d'aide pour la modélisation, ben, tu sais ou demander  :D


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 16-05-2002 à 14:12:46    

Mara's dad a écrit a écrit :

Je te l'ai déjà dis, le design de ta base est ... pas top !
 
Au lieu de multiplier les champs :
INCIDENT.agression
INCIDENT.vol
INCIDENT.incendie
...
 
Tu ferais mieux d'avoir une autre table, qui te donne la liste des types d'incident pour un INCIDENT, chaque type étant affecté d'un niveau de gravité, ce qui te permetrait de sélectionner directemment celui ayant le niveau le plus haut et qui te débarasserait de tous ces iif() qui font quand même pas très propre.
 
Comment tu va faire pour maintenir ton application le jour ou un utilisateur te pondra de nouveaux types d'incidents ?
 
C'est pas une question en l'air !
Tu peux être QUAZIEMENT certain que çà va arriver, même si on t'a jurré que çe n'est pas le cas...
 
Si t'as besoin d'aide pour la modélisation, ben, tu sais ou demander  :D  




 
 
je sais bien que c pas trop évolutif, mais c'était la seule solution que j'avais envisagé
je leur avait dit, qu'il ne pourrait pas ajouter de type d'incident, mais que les sous catégories pouvaient être rajoutées autant que possible (j'avais fait pour en tout cas)
 
je vais réflechir à cette nouvelle organisation
 
n'hésites pas à développer ton idée
 
et encore merci  :jap:


---------------
Music|Market|Feed|Loom|DVD
Reply

Marsh Posté le 16-05-2002 à 14:15:38    

ok alors essayons de comprendre
au lieu d'avoir incident.agression, incident.vol etc
je mets un champ typeIncident. et là dedans je stocke quoi ? quelle relation fais je avec cette nouvelle table ?  
 
pour cette nouvelle table, quels sont donc les champs que je dois créer ?  
je précise que j'ai déja une table typeIncident qui me donne la liste des 9 types d'incident possible
 
 
...


---------------
Music|Market|Feed|Loom|DVD
Reply

Marsh Posté le 16-05-2002 à 14:41:02    

Loom the Gloom a écrit a écrit :

ok alors essayons de comprendre
au lieu d'avoir incident.agression, incident.vol etc
je mets un champ typeIncident. et là dedans je stocke quoi ? quelle relation fais je avec cette nouvelle table ?  
 
pour cette nouvelle table, quels sont donc les champs que je dois créer ?  
je précise que j'ai déja une table typeIncident qui me donne la liste des 9 types d'incident possible
 
 
...  




 
Et tu as donc 9 relations entre INCIDENT et typeIncident ! ! !
 
Bon, dans ta table typeIncident tu ajoutes un champs NiveauDeGravité s'il n'y en as pas déjà un.
 
Ensuite il te faut une nouvelle table qui fasse la relation entre INCIDENT et typeIncident, disons ListeIncidents.
 
Dans ListeIncidents il faut au moins 2 champs:
1- Identifiant de l'indident
2- Identifiant du type d'incident
 
Exemple de requête:
 
SELECT INCIDENT.id, Max(typeIncident.NIVEAU) AS MaxDeNIVEAU
FROM INCIDENT, ListeIncidents, typeIncident
WHERE (((ListeIncidents.id_incident)=[INCIDENT].[ID]) AND ((ListeIncidents.id_typeIncident)=[typeIncident].[ID]))
GROUP BY INCIDENT.id;
 
Qui te donne pour chaque incident le type d'incidant ayant le niveau le plus élevé.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed