Forum de discussion
Forum « Programmation ASP » (archives)
Re: Besoin aide sur ASP/SQL
Envoyé: 26 octobre 2004, 4h15 par loicremy
1) Je crée un jeu d'enregistrement sur une table A qui me retourne un certain nombre d'adresse d'hotels.
2) Je parcours tous les hôtels 1 par 1
3) A chaque hôtel, je prends son numéro identifiant unique
4) Je souhaiterai utiliser ce numéro pour rechercher dans une table B s'il existe ou pas un enregistremnt correspondant à l'identifiant de l'hôtel
Mon problème, c'est dans certain cas, il n'existe pas d'enregistrement correspondant dans la table B et si je fait tout en une seule requete,la jointure ne me renvoie plus d'enregistrement du tout.
De plus , en 'mode' unique, la requete ne permet pas de récuperer des champs textes.
Pour finir, dans certains cas, je doit récuperer plusieurs enregistrements dans la table B et les stocker dans une autre table. Ca serait plus simple de traiter ca à part.
Voici mon code qui pose problème.
J'ai précédement compilé les hôtel choisis et le recordset LISTE_PRODUITS correspond donc à A et NB_CHAMB à B
L'erreur qui survient est :
**********************
BOF ou EOF est égal à True ou l'enregistrement actuel a été supprimé. L'opération demandée nécessite un enregistrement actuel.
/SP1/02_hebergement_locatif_enrichissement.asp, line 47
*******************
La ligne 47 est celle ou je veu afficher le nb_chambre, cette erreur arrive au deuxième parcours de la boucle.
*****VVVVVVVVVVVVVVVV CODE SOURCE VVVVVVVVVVVVVVVVVV*****
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="../../Connections/SP1.asp" -->
<!--#include file="../../Connections/OT_PTI_SQL.asp" -->
<%
Dim LISTE_PRODUITS
Dim LISTE_PRODUITS_numRows
Set LISTE_PRODUITS = Server.CreateObject("ADODB.Recordset")
LISTE_PRODUITS.ActiveConnection = MM_SP1_STRING
LISTE_PRODUITS.Source = "SELECT * FROM provisoire"
LISTE_PRODUITS.CursorType = 0
LISTE_PRODUITS.CursorLocation = 2
LISTE_PRODUITS.LockType = 1
LISTE_PRODUITS.Open()
LISTE_PRODUITS_numRows = 0
%>
<%
do until LISTE_PRODUITS.EOF
%>
<%
Dim NB_CHAMB__la_reference
NB_CHAMB__la_reference = "0"
If ((LISTE_PRODUITS.Fields.Item("id_offre").Value) <> "") Then
NB_CHAMB__la_reference = (LISTE_PRODUITS.Fields.Item("id_offre").Value)
End If
%>
<%
Dim NB_CHAMB
Dim NB_CHAMB_numRows
Set NB_CHAMB = Server.CreateObject("ADODB.Recordset")
NB_CHAMB.ActiveConnection = MM_OT_SAUMUR_SQL_STRING
NB_CHAMB.Source = "SELECT DISTINCT NBCHAMBRES.VALEUR FROM dbo.CRITPROD AS NBCHAMBRES INNER JOIN dbo.MODALITE AS MODA_NBCHAMBRES ON (NBCHAMBRES.CRITERE = MODA_NBCHAMBRES.CRITERE) AND (NBCHAMBRES.MODALITE = MODA_NBCHAMBRES.MODALITE) WHERE (((MODA_NBCHAMBRES.MODALITE)=8) AND ((MODA_NBCHAMBRES.CRITERE)=856000143) AND ((NBCHAMBRES.PRODUIT) Like '" + Replace(NB_CHAMB__la_reference, "'", "''") + "') AND ((NBCHAMBRES.MARQUAGE)<>1) AND ((NBCHAMBRES.MARQUAGE)<>1));"
NB_CHAMB.CursorType = 1
NB_CHAMB.CursorLocation = 2
NB_CHAMB.LockType = 1
NB_CHAMB.Open()
NB_CHAMB_numRows = 0
%>
<%
Response.Write(la_reference & (NB_CHAMB.Fields.Item("VALEUR").Value) & "<br>") '***** Ceci est la ligne 47
%>
<%
NB_CHAMB.Close()
Set NB_CHAMB = Nothing
%>
<%
LISTE_PRODUITS.MoveNext
loop
%>
<html>
<p>02 - Hébergement locatif - Enrichissement OK </p>
</html>
<%
LISTE_PRODUITS.Close()
Set LISTE_PRODUITS = Nothing
%>
VVVVVVVVVVVVVVV Fin du code sorce VVVVVVVVVVVV
Voila, j'ai été bavard, mais j'espère que ça va me permettre d'avancer. Pour les habitués, c'est sûrement simple mais je ne vois pas très bien la soluce pour l'instant.
Merci d'avance
Réponses
|