Pbm Requête SQL trop longue !!!

Résolu
papaye976 Messages postés 17 Date d'inscription jeudi 9 septembre 2004 Statut Membre Dernière intervention 10 juillet 2009 - 31 mai 2005 à 20:34
papaye976 Messages postés 17 Date d'inscription jeudi 9 septembre 2004 Statut Membre Dernière intervention 10 juillet 2009 - 3 juin 2005 à 21:52
Salut à tous: mon premier post dans ce forum ;o)



Voilà mon pbm, sous VB6, j'utilise une String pour construire une requête SQL, laquelle est exécutée sur une base SQL serveur.



Dans certains cas la requête excède 266 caractères, du coup, j'en perds une partie (trop grand pour un String!).



Dans la mesure du possible, je souhaite continuer à utiliser un
recordset (il est déconnecté de la base), quelqu'un a une solution à
proposer ???



D'avance merci !



PS: pendant que j'y suis, vous avez quelques conseils sur les méthodes
ou objets à utiliser pour développer une appli de type ERP (module
industriel, moins de 20 utilisateurs en lecture/écriture).

4 réponses

Slyders Messages postés 300 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 8 janvier 2010 2
1 juin 2005 à 09:42
moi j'ai pas de pb de caractere
sa c ma requete SQL
SELECT RESERVATION.numreserv, datemanif, datefin, Nomsalle, Horaire, #" & verifdeb & "# AS Expr1, #" & veriffin & "# AS Expr2, RESERVATION.numsalle FROM SALLE INNER JOIN RESERVATION ON SALLE.numsalle = RESERVATION.numsalle WHERE (((RESERVATION.datemanif) Between #" & verifdeb & "# And #" & veriffin & "#) AND ((RESERVATION.numsalle)=" & lstsalle.ItemData(lstsalle.ListIndex) & ")) OR (((RESERVATION.datefin) Between #" & verifdeb & "# And #" & veriffin & "#) AND ((RESERVATION.numsalle)=" & lstsalle.ItemData(lstsalle.ListIndex) & ")) OR (((#" & verifdeb & "#) Between datemanif And datefin) AND ((RESERVATION.numsalle)=" & lstsalle.ItemData(lstsalle.ListIndex) & ")) OR (((#" & veriffin & "#) Between datemanif And datefin) AND ((RESERVATION.numsalle)=" & lstsalle.ItemData(lstsalle.ListIndex) & ")) ORDER BY RESERVATION.datemanif"
et sa passe trankil :x
la ligne est un peu grande mais quand tu l'affiche dans un msgbox elle est entiere et sa passe dans la base de donnée :x
3
papaye976 Messages postés 17 Date d'inscription jeudi 9 septembre 2004 Statut Membre Dernière intervention 10 juillet 2009
2 juin 2005 à 20:41
OK, vous avez effectivement raison, c'est une bonne solution quand la
requête est connue d'avance. J'accepte donc les réponses et je vous
remercie, elles serviront certainement à quelqu'un .



Mais dans mon cas, la requête est construite dynamiquement stockée dans un String puis exécuté directement depuis la connection:



Dim CN As ADODB.Connection

Dim RS As ADODB.Recordset

Dim MaRequete as String



MaRequete est ensuite initialisée avec des paramètres utilisateurs obtenus "at RunTime"

puis:



Set RS = CN.Execute(MaRequete)



Et lá, la cata, MaRequete a été tronquée....

En voyant vos réponses, j'ai bien pensé à mettre MaRequête dans une
collection, mais je serais obligé de reconstituer un String pour
pouvoir l'exécuter, du coup... ça va pas marcher...

INSPIREZ-MOI SVP !!!
3
papaye976 Messages postés 17 Date d'inscription jeudi 9 septembre 2004 Statut Membre Dernière intervention 10 juillet 2009
3 juin 2005 à 21:52
L'inspiration est venue: MaRequete n'est plus un String....



Dim MaRequete



MaRequete = "SELECT xxxxxx.............." & VbCrLf

MaRequete = MaRequete & "FROM xxxxxx.............." & VbCrLf

MaRequete = MaRequete & "WHERE xxxxxx.............."



Merci à vous !
3
tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 33
1 juin 2005 à 08:34
Pour ta requete, utilise " & _ puis en debut de ligne " pour la couper : ex
select champ1 " &_
"champ2 from table where ....
1
Rejoignez-nous