Probleme requete ADO dans page ASP (apres un .close fichier EOF ???)

cs_philbaz Messages postés 5 Date d'inscription mercredi 6 décembre 2006 Statut Membre Dernière intervention 16 juillet 2009 - 10 juil. 2009 à 11:57
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 - 16 juil. 2009 à 19:46
Je viens de transferer mon site sur un nouveau serveur, et il se passe quelques de bizarre.

J'ai une boucle, qui fonctionnait trés bien avant, mais maintenant,
si je fais un recup.close, le prochain recup.open est forcement EOF ???

J'attaque une base oracle en ODBC

Merci d'avance de m'aider.

voici le code

Code :
whilenot recup1.EOF
 
 
' pour chaque pièce finie regarder le max(txt_num_fit) et comparer
requete2="select max(to_number(txt_num_fit)) as max_pf from fit.t_indice"
requete2=requete2+" where id_piece=" + cstr(recup1("id_piece"))
commande.CommandText = requete2
commande.CommandType = 1
recup2.Open commande,,1,1ifnot recup2.EOFthenif recup1("txt_num_fit")=recup2("max_pf")thenResponse.Write("" & recup1("num_piece") & " " &"")elseResponse.Write("" & recup1 ("num_piece") & " " &"")endifelseResponse.Write("" & recup1("num_piece") & " " &"")endif

recup2.close

recup1.MoveNextwend

9 réponses

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
10 juil. 2009 à 18:39
Colorise ton code via cette appli, et reposte ici : ce que tu nous donnes est inutilisable.
0
cs_philbaz Messages postés 5 Date d'inscription mercredi 6 décembre 2006 Statut Membre Dernière intervention 16 juillet 2009
15 juil. 2009 à 08:24
while not recup1.EOF

' pour chaque pièce finie regarder le max(txt_num_fit) et comparer


   requete2="select max(to_number(txt_num_fit)) as max_pf from fit.t_indice"
requete2=requete2+" where id_piece=" + cstr(recup1("id_piece"))

commande.CommandText = requete2
commande.CommandType = 1
recup2.Open commande,,1,1

if not recup2.EOF then

   Response.Write(recup1("txt_num_fit") & " ")

   Response.Write(cstr(recup2("max_pf")) & "  ")

   if recup1("txt_num_fit")=recup2("max_pf") then
Response.Write("" & recup1("num_piece") & " " &"")
   else
Response.Write("" & recup1("num_piece") & " " &"")
   end if
else
   Response.Write("" & recup1("num_piece") & " " &"")
end if

recup2.close

recup1.MoveNext

wend


<!-- Coloration syntaxique vb/vba/vb.net : http://charles.racaud.free.fr/code-syntaxing/ -->
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
15 juil. 2009 à 09:49
Ca devrait aller :

Option Explicit
'...
Dim SQL As String
Dim Rs1 As Object, Rs2 As Object 'ADODB.Recordset
'...
SQL = "..."
Set Rs1 = Cnx.Execute(SQL)
While Not Rs1.EOF
   ' pour chaque pièce finie regarder le max(txt_num_fit) et comparer
   SQL = "SELEXT MAX(TO_NUMBER(txt_num_fit)) AS max_pf FROM fit.t_indice"
   SQL = SQL & " WHERE id_piece=" & Rs1("id_piece")
   Set Rs2 = Cnx.Execute(SQL)
   If Not (Rs2.EOF) Then
       Response.Write Rs1("txt_num_fit") & " "
       Response.Write Rs2("max_pf") & "  "
       If Rs1("txt_num_fit") = Rs2("max_pf") Then
           Response.Write "" & Rs1("num_piece") & " " & ""
       Else
           Response.Write "" & Rs1("num_piece") & " " & ""
       End If
   Else
       Response.Write "" & Rs1("num_piece") & " " & ""
   End If
   Rs2.Close: Set Rs2 = Nothing
   Rs1.MoveNext
Wend
Rs1.Close: Set Rs1 = Nothing
, ----
Syntax color by Renfield
0
cs_philbaz Messages postés 5 Date d'inscription mercredi 6 décembre 2006 Statut Membre Dernière intervention 16 juillet 2009
15 juil. 2009 à 10:14
Merci pour ta réponse, mais je te reprécise que mon code fonctionnait trés bien
 sur mon ancien serveur. Donc je ne pense pas que cela vienne du code.

J'ai quand essayé d'executer ton code, pour voir si cela changeait quelque chose, mais ces instructions ne fct pas

Option Explicit
'...
Dim SQL As String


a+


 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
15 juil. 2009 à 10:36
Le Option Explicit doit être tout en haut, avant la moindre ligne de code.
Commentarise le As String, j'ai trop l'habitude de coder en VB6
0
cs_philbaz Messages postés 5 Date d'inscription mercredi 6 décembre 2006 Statut Membre Dernière intervention 16 juillet 2009
15 juil. 2009 à 16:53
J'ai mis Option explicit en haut
j'ai déclaré toutes mes variables.


A quoi correspond cnx ??

merci
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
15 juil. 2009 à 18:38
A l'objet ADODB.Connection, la connexion à la base de données.
Désolé de ne pas te l'avoir dit avant ...
0
cs_philbaz Messages postés 5 Date d'inscription mercredi 6 décembre 2006 Statut Membre Dernière intervention 16 juillet 2009
16 juil. 2009 à 08:21
Avec ton code cela fonctionne,

Sais tu pourquoi mon code marche sur un serveur et ne marche pas sur l'autre ???

J'ai de nombreuses apllications, et cela m'ennuie
de rechercher partout ou j'ai une boucle avec un select dedans.

merci d'avance

a+
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
16 juil. 2009 à 19:46
Pour que tous tes codes fonctionnent, il suffit de faire une chose simple :
ne plus utiliser l'objet Command, et quand tu veux exécuter une requète, tu fais
Set TonRecordset = TaConnexion.Execute(TonSQL)

Je te conseille de mettre ton SQL dans une variable, c'est plus facile pour débugger, car tu peux faire un
MsgBox(TonSQL)
pour voir s'il est correct.

J'ai totalement modifié ton code pour le rendre plus beau, plus clair.
Et je comprends que si tu devais faire ça à beaucoup d'applis, tu ne t'en sortirais pas.

---
VB.NET is good ... VB6 is better
0
Rejoignez-nous