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 :
voici la fameuse ligne 99 : (et son contexte)ADODB.Recordset erreur '800a0e78'
Cette opération n'est pas autorisée si l'objet est fermé.
/****/******/****/****.asp, ligne 99
<%
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 :
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.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
et la je seche.
P.S : pour info quand je mets ma procedure en commentaire et que je fait juste ca :
Tout fonctionne impec.select 00 as 'HTPrice', 00 as 'TTCPrice';
Partager