Bonjour voici un code d'une page ASP :
****************************************
dim param_prevu, rs_comptes_prevu, objconn_prevu, objcmd_prevu, requete_prevu
set objconn_prevu=server.createobject("adodb.connection")
set rs_comptes_prevu=server.createobject("adodb.recordset")
set param_prevu=server.createobject("adodb.parameter")
objconn_prevu.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;password=sql2002;Initial Catalog=PRM3;Data Source=S23HELAT686"
requete_prevu="SELECT TARTICLE.ART_SYMBOLE, TARTICLE.VALEUR_KE, TARTICLE.ART_LIBELLE, TARTICLE.CODE_ANA, TCOMPTE_ANALYTIQUE.LIBELLE_ANA, TUT_REPARER.CODE_UP,"
requete_prevu=requete_prevu & " TUP.LIBELLE_UP, TARTICLE.CODE_UTIL, TUT_REPARER.LIBELLE_UT"
requete_prevu=requete_prevu & " FROM TARTICLE INNER JOIN"
requete_prevu=requete_prevu & " TCOMPTE_ANALYTIQUE ON TARTICLE.CODE_ANA = TCOMPTE_ANALYTIQUE.CODE_ANA INNER JOIN"
requete_prevu=requete_prevu & " TUT_REPARER ON TUT_REPARER.CODE_UTIL = TARTICLE.CODE_UTIL INNER JOIN"
requete_prevu=requete_prevu & " TUP ON TUP.CODE_UP = TUT_REPARER.CODE_UP AND TUP.CODE_SECTEUR = TUT_REPARER.CODE_SECTEUR WHERE left(TARTICLE.CODE_ANA,7) ='"& rs_comptes(0) &"' order by TARTICLE.ART_SYMBOLE, TARTICLE.CODE_ANA;"
dim temp_prm,temp_revent,temp_fim,temp_cad,temp_cip, temp_temps_total,temp_fs, temp_fal,x
rs_comptes_prevu.Open requete_prevu, objconn_prevu
'on met à 0 les variables temporaires
temp_prm=0
temp_revent=0
temp_fim=0
temp_cad=0
temp_cip=0
temp_temps_total=0
temp_fs=0
temp_fal=0
temp_mo=0
rs_comptes_prevu.MoveFirst
While not rs_comptes_prevu.EOF
'on va faire une moyenne
set objcmd_prevu=server.createobject("adodb.command")
objcmd_prevu.ActiveConnection=objconn_prevu
objcmd_prevu.CommandType=adCmdStoredProc
objcmd_prevu.CommandText="CRM_PREVISIONNEL"
set param_prevu=objcmd_prevu.CreateParameter("symbole", adVarChar, adParamInput, 9, rs_comptes_prevu("art_symbole"))
objcmd_prevu.Parameters.Append (param_prevu)
set param_prevu=objcmd.CreateParameter ("prm", adSingle, adParamOutput)
objcmd_prevu.Parameters.Append (param_prevu)
set param_prevu=objcmd.CreateParameter ("temps_total", adSingle, adParamOutput)
objcmd_prevu.Parameters.Append (param_prevu)
set param_prevu=objcmd.CreateParameter("revent", adSingle, adParamOutput)
objcmd_prevu.Parameters.Append (param_prevu)
set param_prevu=objcmd.CreateParameter("FIM", adSingle, adParamOutput)
objcmd_prevu.Parameters.Append (param_prevu)
set param_prevu=objcmd.CreateParameter("CAD", adSingle, adParamOutput)
objcmd_prevu.Parameters.Append (param_prevu)
set param_prevu=objcmd.CreateParameter("CIP", adSingle, adParamOutput)
objcmd_prevu.Parameters.Append (param_prevu)
set param_prevu=objcmd.CreateParameter("MO", adSingle, adParamOutput)
objcmd_prevu.Parameters.Append (param_prevu)
set param_prevu=objcmd.CreateParameter("FS", adSingle, adParamOutput)
objcmd_prevu.Parameters.Append (param_prevu)
set param_prevu=objcmd.CreateParameter("fal", adSingle, adParamOutput)
objcmd_prevu.Parameters.Append (param_prevu)
objcmd_prevu.Execute
'on boucle pour ajouter les resultats et ainsi grouper par compte
temp_prm=temp_prm+objcmd_prevu.Parameters("prm")
temp_revent=temp_revent+objcmd_prevu.Parameters("revent")
temp_fim=temp_fim+objcmd_prevu.Parameters("fim")
temp_cad=temp_cad+objcmd_prevu.Parameters("cad")
temp_cip=temp_cip+objcmd_prevu.Parameters("cip")
temp_temps_total=temp_temps_total+objcmd_prevu.Parameters("temps_total")
temp_fs=temp_fs+objcmd_prevu.Parameters("fs")
temp_fal=temp_fal+objcmd_prevu.Parameters("fal")
temp_mo=temp_mo+objcmd_prevu.Parameters("mo")
set objcmd_prevu=nothing
rs_comptes_prevu.MoveNext
wend
rs_comptes_prevu.close
stockee=round(temp_PRM+temp_revent+(temp_PRM*17)/100,2)
non_stockee=round(temp_CAD + temp_CIP,2)
mo_dir=round(temp_MO+temp_FS+temp_FAL,2)
calcul = mo_dir+stockee+non_stockee
response.write("" & calcul & "")
****************************************
A ceci j'ai ajouté la ligne suivante au début de ma page ASP :
<!--#include file="adovbs.inc"-->
Ce code fait donc appel à une procedure stocké SQLSERVER2000 :
**********************************************
CREATE PROCEDURE CRM_PREVISIONNEL
@symbole varchar(9),
@PRM float output,
@temps_total float output,
@revent float output,
@FIM float output,
@CAD float output,
@CIP float output,
@MO float output,
@FS float output,
@FAL float output
AS
/*MO DIRECTE TOTALE*/
declare curseur_MO cursor for
SELECT SUM(ANECESSITE.TAUX_INTERVENTION * ANECESSITE.TPS_UNITAIRE_NECESSAIRE) as TPS_TOTAL,
SUM(ANECESSITE.TAUX_INTERVENTION * ANECESSITE.TPS_UNITAIRE_NECESSAIRE * TGESTION_APP.CEP_MOYEN) AS MO,
SUM(ANECESSITE.TAUX_INTERVENTION * ANECESSITE.TPS_UNITAIRE_NECESSAIRE) *TGESTION_APP.FRAIS_A_L AS FRAIS_ADMIN,
SUM(ANECESSITE.TAUX_INTERVENTION * ANECESSITE.TPS_UNITAIRE_NECESSAIRE) * TUP.FRAIS_SECTEUR AS FRAIS_SECTEUR
FROM ANECESSITE CROSS JOIN
TGESTION_APP INNER JOIN
TARTICLE ON TARTICLE.ART_SYMBOLE = ANECESSITE.ART_SYMBOLE INNER JOIN
TUT_REPARER ON TARTICLE.CODE_UTIL = TUT_REPARER.CODE_UTIL INNER JOIN
TUP ON TUP.CODE_UP = TUT_REPARER.CODE_UP AND TUT_REPARER.CODE_SECTEUR = TUP.CODE_SECTEUR
WHERE (ANECESSITE.ART_SYMBOLE = @symbole) AND (TGESTION_APP.CODE_FRAIS =
(SELECT code_frais
FROM tetablissement
WHERE code_uc = '23721'))
GROUP BY TGESTION_APP.FRAIS_A_L, TUP.FRAIS_SECTEUR
OPEN curseur_MO
fetch curseur_MO into @temps_total,@mo,@fal,@fs
close curseur_MO
deallocate curseur_MO
if (@temps_total is null)
begin
set @temps_total=0
end
if (@mo is null)
begin
set @mo=0
end
if (@fal is null)
begin
set @fal=0
end
if (@fs is null)
begin
set @fs=0
end
/*OPERATION IP */
declare curseur_IP cursor for
SELECT SUM(PRIX_OP)
FROM TOPERATION_IP
WHERE (CODE_OP IN
(SELECT code_op
FROM aest_fait
WHERE art_symbole = @symbole))
OPEN curseur_IP
fetch curseur_IP into @CIP
if (@cip is null)
begin
set @cip=0
end
close curseur_IP
deallocate curseur_IP
/*MStockée :
PRM constitutives */
declare curseur_PRM cursor for
SELECT SUM(ACOMPOSE.QUANTITE_PRM * TARTICLE.PRIX_NEUF) AS PRM
FROM ACOMPOSE INNER JOIN
TARTICLE ON TARTICLE.ART_SYMBOLE = ACOMPOSE.TAR_ART_SYMBOLE
WHERE (ACOMPOSE.ART_SYMBOLE = @symbole)
open curseur_PRM
fetch curseur_PRM into @PRM
close curseur_PRM
deallocate curseur_PRM
if (@prm is null)
begin
set @prm=0
end
/*Reventilation: */
declare @KE float
declare @sigma_ke float
declare @aux float, @reventilation float
SELECT @sigma_ke= (SUM(valeur_ke) * 12)
FROM tarticle
WHERE code_ana =
(SELECT code_ana
FROM tarticle
WHERE art_symbole = @symbole)
if @sigma_ke=0
begin
set @sigma_ke=1
end
declare curseur_revent cursor for
SELECT sum(TCPTE_REVENTILATION.PRIX_REVENT * AVIREMENT_ANALYTIQUE.TAUX_VIR_ANA / 100 /@sigma_ke) AS Prix
FROM TCPTE_REVENTILATION INNER JOIN
AVIREMENT_ANALYTIQUE ON AVIREMENT_ANALYTIQUE.CODE_REVENT = TCPTE_REVENTILATION.CODE_REVENT INNER JOIN
TARTICLE ON TARTICLE.CODE_ANA = AVIREMENT_ANALYTIQUE.CODE_ANA
WHERE (TARTICLE.ART_SYMBOLE = @symbole)
open curseur_revent
fetch curseur_revent into @revent
close curseur_Revent
deallocate curseur_Revent
if (@revent is null)
begin
set @revent=0
end
/*
FIM et CAD
*/
select @FIM=FRAIS_I_M from TGESTION_APP where CODE_FRAIS =
(SELECT code_frais
FROM tetablissement
WHERE code_uc = '23721')
select @CAD=couts_achats_directs from tarticle where tarticle.art_symbole=@symbole
if (@cad is null)
begin
set @cad=0
end
GO
**********************************************
Tout ceci devrait fonctionner à merveille ! Seulement, IE m'affiche le message d'erreur suivant :
Type d'erreur :
Erreur d'exécution Microsoft VBScript (0x800A01A8)
Objet requis: ''
/prm/Contenu_Suivi_P_R.asp, line 538
La ligne 538 étant :
set param_prevu=objcmd_prevu.CreateParameter("symbole", adVarChar, adParamInput, 9, rs_comptes_prevu("art_symbole"))
MAIS IL N'Y AS PAS D'ERREUR A CETTE LIGNE D'APRES MOI, LE CODE DE CETTE LIGNE EST EXACTE ! DE PLUS TOUTES LES VARIABLES SONT CORRECTS AUSSI...
ALORS QU'EST CE QUI SE PASSE ?????
si quelqu'un peut m'aider ?
Merci d'avance.