[ASP] Need help ! Zarbi bleme avec Base de données

Need help ! Zarbi bleme avec Base de données [ASP] - ASP - Programmation

Marsh Posté le 03-12-2002 à 11:30:27    

Salut
 
Tout d'abord je présente les outils que j'utilise avant le problème :
- IIS 5
- Windoz 2000 SERVER dernier Service Pack
- MySQL 4.0.2
 
A ce stade, tout marche bien, les scripts ASP travaillent en parfaite harmonie avec MySQL et affiche tous mes résultats correctement (j'en ai ch... mais c'est ok maitenant :) ).
 
Seulement, on m'annonce qu'on laisse tomber MySQL et que l'on prend ORACLE à la place (Argh!!).
 
Et c'est reparti pour du taff pour cette migration...
 
Les outils utilisés maintenant sont les mêmes sauf pour la base de données :  
- ORACLE version 8.0.5 (un peu vieu mais obligé de faire avec)
- Un pilote OBDC for Oracle pour la communication entre Oracle et ASP.
 
La base Oracle tourne correctement, et mes scripts fonctionnent presque bien... je m'explique :

  • Si je fais une requête du genre "Select count(*) from ma_table", le script ASP affiche correctement le résultat.
  • En revanche si je fais un "Select * from ma_table", impossible de récuperer la liste résultant de cette requête (EOF sur mon objet RecordSet mais aucune erreur générée...). :??:  :??:  


Pourquoi il m'est impossible d'afficher un tel résultat ??  
Si tu connais un peu ORACLE, dis moi tout :) (trucs à configurer sur Oracle que je n'aurais pas fait ?)
Si tu maîtrises les Scripts ASP et surtout la configuration pour se connecter et "naviguer" dans une base de données
(curseur, connectionString ...).
 
Voila, la je sèche vraiment et je recherche désepérement des informations pouvant comprendre et résoudre mon problème.
 
Merci de m'avoir lu et de me laisser tes réflexions sur mon big souci.
 
 

Reply

Marsh Posté le 03-12-2002 à 11:30:27   

Reply

Marsh Posté le 03-12-2002 à 14:26:48    

Snif !
 
Si je résume :
 
Une requete du type : "SELECT COUNT(*) FROM Ma_table" dans une page ASP me renvoit un résultat (différent de 0)
 
Une requête du type : "SELECT * FROM Ma_table" dans une page ASP me renvoit un End Of File (vide, rien, nogo koi...). KESKIVAPA ??
 
Allez, plizz laches toi !! Help me...


Message édité par ZyGoR le 03-12-2002 à 14:27:14
Reply

Marsh Posté le 03-12-2002 à 14:28:46    

peut tu mettres quelque lignes de code..des fois que :)

Reply

Marsh Posté le 03-12-2002 à 14:33:59    

Bah tu ne donnes aucune ligne de ton code, c pas hyper évident de t'aider avec si peu d'infos  ;)  

Reply

Marsh Posté le 03-12-2002 à 14:43:53    

A la demande générale :) :

Code :
  1. <%
  2. Dim resultat
  3. ' Connection
  4. Set objCnn = Server.CreateObject ("ADODB.Connection" )
  5. objCnn.Open ("DSN=ORACLE;UID=PROOT;PWD=**********" )
  6. ' Recordset 1
  7. Set objRst = Server.CreateObject ("ADODB.Recordset" )
  8. objRst.CursorType = adOpenDynamic
  9. objRst.ActiveConnection = objCnn
  10. ' Requete One : on veut un seul résultat (une sortie) donc Count(*) par exemple
  11. sqlQuery = "SELECT Count(*) Result FROM Produits"
  12. objRst.Open sqlQuery
  13. resultat = objRst("Result" )
  14. sqlRst.close
  15. ' Affichage Resultat de la requete One
  16. response.write resultat
  17. ''''''''''''''''''''''''''''''''''
  18. ' Requete Two : on veut une liste de résultats car plusieurs lignes dans la table
  19. sqlQuery = "SELECT * FROM Produits"
  20. objRst.Open sqlQuery
  21. ' test
  22. IF objRst.EOF then response.write "EOF"
  23. sqlRst.close
  24. %>


 
et sur la page, je vois le fameux "EOF" s'afficher...


Message édité par ZyGoR le 03-12-2002 à 16:23:50
Reply

Marsh Posté le 03-12-2002 à 14:55:02    

je pense erruer d'innatention :
SELECT * Result FROM Produits
 
soit tu mets *soit tu mets result...mais pas les deux :)

Reply

Marsh Posté le 03-12-2002 à 15:06:14    

Vi erreur lors du copier-coller :p
 
thx ! tu as l'oeil!!
Rien d'autres sinon pour faire avancer le schmilblick ?

Reply

Marsh Posté le 03-12-2002 à 15:21:26    

est ce un erreur de copie coller aussi avec le count(*) result???

Reply

Marsh Posté le 03-12-2002 à 15:26:52    

d'ailleur quand tu fait fais un affichage du count je suis etonné que tu ais quelque chose avec le objRst("Result" ) car le count ne retourne pas un champ Result donc ce serait plutot un objRst.Fields(0).value ou objRst("Result" ) .Fields(1).value je suis plus trop ou ça commence d'ailleur..
 
idealement c'est de creer un alias pour ta donnée :
select count(Result) as compteur from Produits
et dans l'asp:
response.write(objRst("compteur" ))

Reply

Marsh Posté le 03-12-2002 à 15:45:31    

Sous Oracle :  

Code :
  1. "SELECT count(*) compteur FROM..."


marche tout aussi bien que :

Code :
  1. "SELECT count(*) as compteur FROM..."


et

Code :
  1. response.write objRst("compteur" )


 
affiche un résultat non vide (et non nul)!!  
 
Le problème n'est pas la à vrai dire, c'est plutot dans la requete TWO et l'affichage du "EOF" sur ma page...

Code :
  1. sqlQuery = "SELECT * FROM Produits"
  2. objRst.Open sqlQuery
  3. ' test
  4. IF objRst.EOF then response.write "EOF"
  5. sqlQuery.close

Reply

Marsh Posté le 03-12-2002 à 15:45:31   

Reply

Marsh Posté le 03-12-2002 à 15:56:30    

ok mais je connais pas du tout oracle..desolé
 
Peut etre est ce le fait que tu utilise 2 fois le meme nom pour ton objet recordset...alors que tu ne ledetruit pas apres utilisation du avec ton count
essaye soit de changer de nom, soit de faire un objRs.movefirst
sqlQuery = "SELECT * FROM Produits"  
objRst.Open sqlQuery  
objRst.MoveFirst

 
Je pense que ton pb est là  :bounce:

Reply

Marsh Posté le 03-12-2002 à 16:02:15    

Là tu m'as touché gars :)
 
J'ai deja tester le fameux : objRst.MoveFirst
en pensant que le curseur devait être en bas...
L'affichage = "Erreur Interne du serveur" sans autre explication...
SAVEUDIRKOICA ???? :)

Reply

Marsh Posté le 03-12-2002 à 16:13:22    

as tu inclu le fichiers abovbs.inc qui contient la valeur du curseur pour adOpenDynamic ...En fait il est possible que ton curseur refuse de remonter à cause ds prporités attribuées.
essaye cette ligne a la place de ta  
 
objRst.CursorType = 3
Il me semble qu'avec la valeur 3 on peut descendre et remonter
 
si non change le nom du recordset dans le deuximme requete pour voir deja si c'est une histore de curseur

Reply

Marsh Posté le 03-12-2002 à 16:14:29    

Moi je pense que le probleme se situe au niveau de la fermeture du recordset ( il me semble que tu ferme la requete.
 

Citation :

objRst.Open sqlQuery
   resultat = objRst("Result" )
  sqlQuery.close


 
remplace par
 

Citation :


objRst.Open sqlQuery
resultat = objRst(0)
if objRst.state=1 then objRst.close


Message édité par Lord II le 03-12-2002 à 16:14:55

---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 03-12-2002 à 16:25:43    

lord ii a écrit a écrit :

Moi je pense que le probleme se situe au niveau de la fermeture du recordset ( il me semble que tu ferme la requete.
 

Citation :

objRst.Open sqlQuery
   resultat = objRst("Result" )
  sqlQuery.close


 
remplace par
 

Citation :


objRst.Open sqlQuery
resultat = objRst(0)
if objRst.state=1 then objRst.close






 
je viens de voir ca, encore une erreur d'inattention, c'est corrigé

Reply

Marsh Posté le 03-12-2002 à 16:28:30    

grosmethos a écrit a écrit :

as tu inclu le fichiers abovbs.inc qui contient la valeur du curseur pour adOpenDynamic ...En fait il est possible que ton curseur refuse de remonter à cause ds prporités attribuées.
essaye cette ligne a la place de ta  
 
objRst.CursorType = 3
Il me semble qu'avec la valeur 3 on peut descendre et remonter
 
si non change le nom du recordset dans le deuximme requete pour voir deja si c'est une histore de curseur




 
j'ai inclus le fichier abovbs.inc qui contient :

Code :
  1. '---- CursorTypeEnum Values ----
  2. Const adOpenForwardOnly = 0
  3. Const adOpenKeyset = 1
  4. Const adOpenDynamic = 2
  5. Const adOpenStatic = 3


 
et l'ensemble de mes recordsets sont avec adOpenDynamic...
 
Encore une idée ????

Reply

Marsh Posté le 03-12-2002 à 16:30:31    

et en chgt le nom du recordset dans la deuxiemme requete??

Reply

Marsh Posté le 03-12-2002 à 16:42:24    

grosmethos a écrit a écrit :

et en chgt le nom du recordset dans la deuxiemme requete??




 
Snif, j'y ai cru à ce changement.. mais non, je vois toujours un "EOF" à l'écran.
 

Reply

Marsh Posté le 03-12-2002 à 16:47:35    

Remplac ton code 2eme requete par ça!!!
 
Set objRst2 = Server.CreateObject ("ADODB.Recordset" )
  objRst2.CursorType = adOpenDynamic
  objRst2.ActiveConnection = objCnn
 
sqlQuery = "SELECT * FROM Produits"  
objRst2.Open sqlQuery  
 
' test  
IF objRst2.EOF then response.write "EOF"  
else  
do while not objRs2.Eof
response.write(objRs2("Result" ))
objRs2.MoveNext
Loop

 

Reply

Marsh Posté le 03-12-2002 à 16:47:51    

NOUVELLE OBSERVATION !!!
 

Code :
  1. sqlQuery = "SELECT * FROM Produits"
  2. objRst.Open sqlQuery
  3. ' test
  4. IF objRst.EOF then response.write "EOF"
  5. sqlRst.close


Ca me donne un "EOF"...
 
et...
 

Code :
  1. sqlQuery = "SELECT ID FROM Produits"
  2. objRst.Open sqlQuery
  3. ' test
  4. IF objRst.EOF then response.write "EOF"
  5. sqlRst.close


Ca me donne un "EOF"...
 
OR...

Code :
  1. sqlQuery = "SELECT Nom FROM Produits"
  2. objRst.Open sqlQuery
  3. ' test
  4. IF objRst.EOF then response.write "EOF"
  5. sqlRst.close


Je n'ai plus EOF !!!!
 
Bilan de mon observation : le champ ID est un NUMBER sous ORACLE et dès que j'ai un champ de type NUMBER quelque part dans une requete SQL (Il en suffit d'un!!), ca me donne un EOF.
 
Pourquoi caaaaa..... snif

Reply

Marsh Posté le 04-12-2002 à 09:49:59    

Pourquoi une colonne de type NUMBER sous Oracle empeche-t-elle d'envoyer des résultats sur ma page web ????
 
J'ai vraiment pas envie de modifier toutes mes requêtes de mes scripts ASP.
ie :  
"SELECT ID_Number FROM Ma_Table" avec ID_Number de type NUMBER, me renvoie un End of File.
"SELECT TO_CHAR(ID_Number) FROM Ma_Table" me renvoie bien une liste de données.
 
Pas d'idée ? plizzz
 
thx d'avance

Reply

Marsh Posté le 04-12-2002 à 10:05:00    

Peut etre un pb de typage de données justement ( enfin de conversion dans ce cas là )


---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 04-12-2002 à 10:16:14    

Vi et je fais quoi alors ?? :)

Reply

Marsh Posté le 04-12-2002 à 10:55:16    

SI le fait de typer la donnée dans la requete fonctionne il ne reste (peut etre ) que ca !!!
 
 
Désolé :jap:  :jap:


---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 04-12-2002 à 11:22:04    

Si c'est le cas, alors je veux voir un gars qui a eu ce problème et qui me confirme ce que tu dis.
 
Mais j'y crois pas, c'est vraiment pas logique cette démarche
 
personne d'autres ??? thx

Reply

Marsh Posté le 04-12-2002 à 16:29:10    

:hot:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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