longueur requete sous excel

  • Initiateur de la discussion laurent
  • Date de début
L

laurent

Guest
bonjour,

j'ai une requete de plus de 600 caracteres

querystring = 'SELECT H_LIEU.IE_LIB1,count(dtalbdge.datebdge), H_ACT.CT_LIB1, h_pers.er_nom||' '||h_pers.er_pnom, H_PERS.ER_NUMPERS, R_calendrier('P','' & Me.date_deb1 & '','' & Me.date_fin1 & '') H_INSACT.NS_IDACT, H_INSACT.NS_IDPERS, H_INSACT.NS_DATDEB, H_INSACT.NS_DATFIN, H_INSACT.NS_IDUNI FROM MAELIS.DTALBDGE DTALBDGE, MAELIS.H_ACT H_ACT, MAELIS.H_INSACT H_INSACT, MAELIS.H_LIEU H_LIEU, MAELIS.H_PERS H_PERS, MAELIS.H_UNIACT H_UNIACT '
querystring2 = ' FROM MAELIS.DTALBDGE DTALBDGE, MAELIS.H_ACT H_ACT, MAELIS.H_INSACT H_INSACT, MAELIS.H_LIEU H_LIEU, MAELIS.H_PERS H_PERS, MAELIS.H_UNIACT H_UNIACT '
querystring3 = ' WHERE ((H_ACT.CT_IDACT = DTALBDGE.IDACT) AND (h_act.ct_lib1 = '' & Me.choix & '') and (dtalbdge.datebdge between '' & Me.date_deb2 & '' and '' & Me.date_fin2 & '') and (h_insact.ns_datfin >= '' & Me.date_deb2 & '') and h_insact.ns_datdeb <= '' & Me.date_fin2 & '')) AND H_INSACT.NS_IDPERS = H_PERS.ER_IDPERS AND H_INSACT.NS_IDACT = H_UNIACT.NI_IDACT AND H_INSACT.NS_IDUNI = H_UNIACT.NI_IDUNI AND H_ACT.CT_IDACT = H_UNIACT.NI_IDACT AND H_PERS.ER_IDPERS = DTALBDGE.IDPERS AND DTALBDGE.IDLIEU = H_LIEU.IE_IDLIEU AND ((H_PERS.ER_ETAT='1')) group by h_lieu.ie_lib1, h_act.ct_lib1, h_pers.er_nom||' '||h_pers.er_pnom, h_pers.er_numpers, r_calendrier('P','' & Me.date_deb1 & '','' & Me.date_fin1 & '', h_insact.ns_idact,h_insact.ns_idpers,h_insact.ns_datdeb,h_insact.ns_datfin,h_insact.ns_iduni) order by 1,4;'

querystring4 = querystring + querystring2 + querystring3

que j'essaye d'executer sous excel mais manque de pot impossible en fait il ne prend que la premiere ligne et un peu de la seconde... je voudrais savoir comment declarer mes variables pour resoudre ce prob
les variables actuellement sont formatees en string....j'ai tout essaye et la je seche

merci de votre aide
 

Jam

XLDnaute Accro
Salut Laurent,

Change le type de ta variable [querystring] de String en Variant et cela devrait aller.
Les String sont limités à 256 caractères (sauf erreur de ma part).

Petits conseils au passage: quand tu construis une requête SQL essaie de la décomposer, c'est plus facile à construire et surtout à debugger quand y'a un problème.
ex.:
sSQL='SELECT .......'
sSQL=sSQL & 'WHERE ......'
sSQL=sSQL & 'ORDER BY ....'
etc...

Autre petite chose: comme tu fais souvent référence à un objet, tu peux utiliser des With...End With

Dernière chose: Regarde si tu ne peux pas décomposer ta requête en deux ou plusieurs requêtes. Ca surcharge moins le moteur de la Bdd, et c'est souvent plus rapide en performance ;).

Bon courage
 
L

laurent

Guest
bonjour et merci de ta reponse
je viens de modifier les string en Variant et cela ne change pas grand chose j'ai toujours le meme message d'erreur et en ajoutant un espion je vois qu'il sarrete tjs a la premiere ligne...

qqu'un a une autre idee?? merci
 
L

laurent

Guest
merci mais ma requete est deja decoupee en select
from
where il manque juste le order by lol

mais j'ai trouve mon erreur en fait j'ai fait un copier coller de from deux fois...

merci a++
 

Statistiques des forums

Discussions
312 777
Messages
2 092 029
Membres
105 156
dernier inscrit
GermainPair