Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/07/2006, 11h42   #1
Invité régulier
 
Inscription : avril 2003
Messages : 23
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 23
Points : 8
Points : 8
Envoyer un message via AIM à sidero Envoyer un message via MSN à sidero
Par défaut probleme de reception d'une procedure stockée considérée comme vide par ma page asp

Bonjour,

J'ai un petit soucis je travaille pour un client sur la création d'un site web, en local sur ma machine tout fonctionne bien, mais lorsque j'integre mes pages sur le serveur du client, j'ai un clash que je ne comprends pas, apres maintes et maintes tentatives je ne trouve pas. Voici le problème :

Lorsque j'execute une page qui fait appel à une procedure stockée SQL serveur 2003 qui est sensé inserer des données dans une table et retourner la table en question, j'ai le message d'erreur suivant sur ma page :
Citation:
ADODB.Recordset erreur '800a0e78'
Cette opération n'est pas autorisée si l'objet est fermé.

/****/******/****/****.asp, ligne 99
voici la fameuse ligne 99 : (et son contexte)
Citation:
<%
function getBillPrice(numCom, numCli)
{
var _numCom = numCom;
var _numCli = numCli;
var getBillPrice = Server.CreateObject("ADODB.Recordset");
getBillPrice.ActiveConnection = MM_siteSQL_STRING;
getBillPrice.source = "GetBillPrice('" + _numCom + "', '" + _numCli + "')";
getBillPrice.CursorType = 0;
getBillPrice.CursorLocation = 2;
getBillPrice.LockType = 1;
getBillPrice.Open();
ligne 99 -->if(getBillPrice.EOF || getBillPrice.BOF) {
getBillPrice = Server.CreateObject("ADODB.Recordset");
getBillPrice.ActiveConnection = MM_siteSQL_STRING;
getBillPrice.source = "select 'Pas de montant' as 'TTCPrice'";
getBillPrice.CursorType = 0;
getBillPrice.CursorLocation = 2;
getBillPrice.LockType = 1;
getBillPrice.Open();
}

return getBillPrice;
}
%>

voici le code de la procédure :

Citation:
CREATE PROCEDURE GetBillPrice @Bill_Id varchar(9), @Cli_Id varchar(17) AS

BEGIN TRANSACTION
Declare @NumPiece varchar(9);
delete from TA_ResultLines;
Declare getBillHeaders cursor for select DO_Piece from E_DOCENTETE where Cle_Prod = @Bill_Id and DO_Tiers = @Cli_Id;




open getBillHeaders;
fetch getBillHeaders into @NumPiece;

while(@@FETCH_STATUS <> -1)
BEGIN
insert into TA_ResultLines
(RET_AR_REF, RET_AR_DESIGN, RET_Enum_Cond, Ret_QTE_BC, RET_PUHT, RET_Remise_Valeur,
RET_Remise_Type, RET_PT_Remise_HT, RET_Type, RET_PUTTC, RET_PT_Remise_TTC)
select AR_REF, DL_DESIGN, EU_ENUMERE, DL_QTEBC, DL_PrixUnitaire, DL_Remise01REM_Valeur,
DL_Remise01REM_Type, DL_MONTANTHT,DO_Type, (DL_PrixUnitaire + ((DL_PrixUnitaire * DL_Taxe1)/100)), (DL_MONTANTHT + ((DL_MONTANTHT * DL_Taxe1)/100))
from E_DOCLIGNE where DO_Piece = @NumPiece and DL_QTE <> 0;

fetch next from getBillHeaders into @NumPiece;
END

close getBillHeaders;
deallocate getBillHeaders;

select sum(RET_PT_Remise_HT) as 'HTPrice', sum(RET_PT_Remise_TTC) as 'TTCPrice'
from TA_ResultLines;
COMMIT;
GO
j'ai regardé, ma table est bien effacée a chaque lancement de la procedure, elel est bien remplie avec toutes les valeurs qui vont bien, mais apres ben bam lors de la reception de la procedure a ma page asp, adodb considere que la reception est invalide et donc ferme mon recordset.

et la je seche.

P.S : pour info quand je mets ma procedure en commentaire et que je fait juste ca :
Citation:
select 00 as 'HTPrice', 00 as 'TTCPrice';
Tout fonctionne impec.
sidero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2006, 14h33   #2
Invité régulier
 
Inscription : avril 2003
Messages : 23
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 23
Points : 8
Points : 8
Envoyer un message via AIM à sidero Envoyer un message via MSN à sidero
apparement, quand je fait un select sur ma table TA_RESULTLINES sans transaction, tout marche nickel, donc ca viendrais de la je pense. mais du coup c'est plus un problème du coté du SGBD.

merci pour l'aide.
sidero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2006, 15h22   #3
Membre habitué
 
Inscription : juillet 2006
Messages : 93
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : juillet 2006
Messages : 93
Points : 107
Points : 107
slt,

ton erreur vient de la ligne d'en dessous en fait je pense.
ca m'étonnerait que tu ais le droit de déclarer a nouveau un objet avec le meme nom que celui qui existe déjà :
Code :
1
2
3
 
 
getBillPrice = Server.CreateObject("ADODB.Recordset");
essaie peut etre de changer le nom de celui de la ligne 100...
Ntilou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2006, 15h56   #4
Invité régulier
 
Inscription : avril 2003
Messages : 23
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 23
Points : 8
Points : 8
Envoyer un message via AIM à sidero Envoyer un message via MSN à sidero
Alors j'ai résolu le problème en changeant la requete de ma procedure, ainsi j'ai pu évincer la transaction qui était la pour assurer l'intégrité de la table TA_Resultlines.

voici la nouvelle procédure :
Citation:
select
sum(DLN.DL_MONTANTHT) as 'HTPrice',
sum((DLN.DL_MONTANTHT + ((DLN.DL_MONTANTHT * DLN.DL_Taxe1)/100))) as 'TTCPrice'
from E_DOCLIGNE AS DLN
INNER JOIN E_DOCENTETE AS DET
ON DLN.DO_Piece = DET.DO_Piece
where DET.Cle_Prod = @Bill_Id
and DET.DO_Tiers = @Cli_Id
and DLN.DL_QTE <> 0;
à partir de là tout fonctionne à merveille, c'était donc une erreure SQL plutot qu'ASP.

merci quand même pour votre aide.
sidero est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h51.


 
 
 
 
Partenaires

Hébergement Web