IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP Discussion :

probleme de reception d'une procedure stockée considérée comme vide par ma page asp


Sujet :

ASP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 23
    Points : 14
    Points
    14
    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 :
    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)
    <%
    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 :

    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 :
    select 00 as 'HTPrice', 00 as 'TTCPrice';
    Tout fonctionne impec.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    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.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 93
    Points : 111
    Points
    111
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    getBillPrice = Server.CreateObject("ADODB.Recordset");
    essaie peut etre de changer le nom de celui de la ligne 100...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    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 :
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme de boucle while dans une procedure stockée
    Par aboulemagnifique dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 08/08/2007, 13h39
  2. Probleme avec une procedure stocké avec IF
    Par el_quincho dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/10/2006, 17h21
  3. Réponses: 5
    Dernier message: 13/07/2006, 11h11
  4. Probleme dans une procedure stockée
    Par malbaladejo dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 07/07/2004, 15h08
  5. [C#] [Oracle] Probleme avec une procedure stockée
    Par sronin1 dans le forum Accès aux données
    Réponses: 4
    Dernier message: 28/05/2004, 20h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo