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 :

Intégration requete SQL avec tabels temporaires


Sujet :

ASP

  1. #1
    Membre éclairé Avatar de stolx_10
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 374
    Par défaut Intégration requete SQL avec tables temporaires
    Bonjour,

    J'ai une requête complexe à implanter dans une page ASP, mais j'ai l'impression que le fait que j'utilise des tables temporaires dans le SQL fait que ça ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <%
     
    'Balance fournisseur
    sql =""
     
    sql = sql & "drop table #b"
    sql = sql & "drop table #t"
     
    sql = sql & "select * "
    sql = sql & "into #b"
    sql = sql & "from"
    sql = sql & "(select  .....) as t"
    sql = sql & "where devise ='EUR'"
     
    sql = sql & "select * "
    sql = sql & "into #b"
    sql = sql & "from"
    sql = sql & "(select  .....) as b"
    sql = sql & "where devise ='USD'"
     
    sql = sql & "drop table #a"
     
    sql = sql & "select *"
    sql = sql & "into #a"
    sql = sql & "from ("
    sql = sql & "select ....."
    sql = sql & "from #t"
     
    sql = sql & "union all"
     
    sql = sql & "select ....... "
    sql = sql & "from #b) as a"
     
     
    sql = sql & "select ......"
    sql = sql & "from #a"
    sql = sql & "where 1=1"
    sql = sql & "group by fournisseur_id, fournisseur_nom "
    sql = sql & "having sum(restant_euro_euro) <>0 or sum(restant_euro_usd) <>0"
    sql = sql & "order by " & tri & " " & trisens
     
     
     
    'response.write sql
    Set RS = AL_Selectionner (sql, 0, 1, 0)
    %>
    Dois-je utiliser des # pour les tables temporaires, ou carrément des create table ???

    Enfin j'aimerai avoir une solution avec quelques exemples si possible, Merci

    PS : dans mes requetes, j'ai fait des "select ...." pour faire court.
    Sinon y'en a pour 115 lignes de SQL avec l' indantation


    j'oubliais le message d'erreur :

    Microsoft OLE DB Provider for ODBC Drivers error '80040e21'

    ODBC driver does not support the requested properties.

  2. #2
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    Il manque des espace et des retour chariot dans la requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sql = sql & " from #a " & vbcrlf
    sql = sql & " where 1=1 " & vbcrlf
    Tu n'as cas faire un response.write de sql pour t'en rendre compte.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Membre éclairé Avatar de stolx_10
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 374
    Par défaut
    oui j'ai modifié après coup !
    ma requête fonctionne très bien quand je la lance dans sql server studio ( après avoir fait un response.write) , mais lorsque je veux ouvrir la page ASP j'ai ce message :

    drop table #b drop table #t select * into #b from (select e_compta_segments.fournisseur_id, e_general_fournisseurs.fournisseur_nom, e_compta_segments.id as numero, e_compta_segments.periode, e_compta_segments.glinvoice as facture_numero, e_compta_segments.date_elbs as facture_periode , e_compta_segments.devise,e_compta_segments.origine, sum( credit_devise - debit_devise ) as montant_devise , sum( credit_euro - debit_euro ) as montant_euro, ( sum(e_compta_segments.credit_euro - e_compta_segments.debit_euro) + (select isnull (sum( isnull(cd.credit_euro,0) - isnull(cd.debit_euro,0) ),0) from e_compta_segments as cd where cd.origine = 'CD' and cd.seg1 in ('401000', '404000', '425700') and cd.periode <= '17/11/2008' and cd.glinvoice = e_compta_segments.id ) ) as restant_euro_euro from e_compta_segments inner join e_general_fournisseurs on fournisseur_id = fournisseur_numero where e_compta_segments.origine = 'ap' and e_compta_segments.seg1 in ('401000', '404000', '425700') and e_compta_segments.periode <= '17/11/2008' group by e_compta_segments.fournisseur_id, e_general_fournisseurs.fournisseur_nom, e_compta_segments.id , e_compta_segments.periode, e_compta_segments.glinvoice , e_compta_segments.date_elbs ,e_compta_segments.devise,e_compta_segments.origine having sum(e_compta_segments.credit_euro - e_compta_segments.debit_euro) + (select isnull (sum( isnull(cd.credit_euro,0) - isnull(cd.debit_euro,0) ),0) from e_compta_segments as cd where cd.origine = 'CD' and cd.seg1 in ('401000', '404000', '425700') and cd.periode <= '17/11/2008' and cd.glinvoice = e_compta_segments.id ) <> 0 and sum(credit_devise - debit_devise) <> 0 and sum(credit_euro - debit_euro) <> 0 ) as t where devise ='EUR' select * into #t from (select e_compta_segments.fournisseur_id, e_general_fournisseurs.fournisseur_nom, e_compta_segments.id as numero, e_compta_segments.periode, e_compta_segments.glinvoice as facture_numero, e_compta_segments.date_elbs as facture_periode , e_compta_segments.devise,e_compta_segments.origine, sum( credit_devise - debit_devise ) as montant_devise , sum( credit_euro - debit_euro ) as montant_euro, ( sum(e_compta_segments.credit_euro - e_compta_segments.debit_euro) + (select isnull (sum( isnull(cd.credit_euro,0) - isnull(cd.debit_euro,0) ),0) from e_compta_segments as cd where cd.origine = 'CD' and cd.seg1 in ('401000', '404000', '425700') and cd.periode <= '17/11/2008' and cd.glinvoice = e_compta_segments.id ) ) as restant_euro_usd from e_compta_segments inner join e_general_fournisseurs on fournisseur_id = fournisseur_numero where e_compta_segments.origine = 'ap' and e_compta_segments.seg1 in ('401000', '404000', '425700') and e_compta_segments.periode <= '17/11/2008' group by e_compta_segments.fournisseur_id, e_general_fournisseurs.fournisseur_nom, e_compta_segments.id , e_compta_segments.periode, e_compta_segments.glinvoice , e_compta_segments.date_elbs ,e_compta_segments.devise,e_compta_segments.origine having sum(e_compta_segments.credit_euro - e_compta_segments.debit_euro) + (select isnull (sum( isnull(cd.credit_euro,0) - isnull(cd.debit_euro,0) ),0) from e_compta_segments as cd where cd.origine = 'CD' and cd.seg1 in ('401000', '404000', '425700') and cd.periode <= '17/11/2008' and cd.glinvoice = e_compta_segments.id ) <> 0 and sum(credit_devise - debit_devise) <> 0 and sum(credit_euro - debit_euro) <> 0 ) as t where devise ='USD' drop table #a select * into #a from ( select fournisseur_id, fournisseur_nom, restant_euro_usd, 0 as restant_euro_euro from #t union all select fournisseur_id, fournisseur_nom, 0 as restant_euro_usd, restant_euro_euro from #b) as a

    select fournisseur_id, fournisseur_nom, sum(restant_euro_euro) as restant_euro_euro, sum(restant_euro_usd) as restant_euro_usd, (sum(restant_euro_euro)+sum(restant_euro_usd)) as Montant_Du from #a where 1=1 group by fournisseur_id, fournisseur_nom having sum(restant_euro_euro) <>0 or sum(restant_euro_usd) <>0 order by fournisseur_nom asc
    (affichage du tableau) :
    Balance auxiliaire fournisseurs

    N° de fournisseur |Nom du fournisseur | Restant en Euro |Restant USD converti en Euro | Montant Du

    message erreur :
    ADODB.Recordset error '800a0e78'
    Operation is not allowed when the object is closed.

    /bi/r_balance_fournisseurs.asp, line 331

    cette ligne 331 est celle ci (en bleu):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    response.write sql
    Set RS = AL_Selectionner (sql, 0, 1, 0)
    %>
    <div id="table">
    	<h2>Balance auxiliaire fournisseurs</h2>
    	<table cellspacing="0" cellpadding="0" class="colonne">
    		<tr>
    			<td class="titre"><a href="javascript:tri('fournisseur_id')">N° de fournisseur</a></td>
    			<td class="titre"><a href="javascript:tri('fournisseur_nom')">Nom du fournisseur</a></td>
    			<td class="titre"><a href="javascript:tri('restant_euro_euro')">Restant en Euro</a></td>
    			<td class="titre"><a href="javascript:tri('restant_euro_usd')">Restant USD converti en Euro</a></td>
    			<td class="titre"><a href="javascript:tri('Montant_Du')">Montant Du</a></td>
    		</tr>
    		<%cl = 0
    		total = 0
    		do while not rs.eof%>
    			<%'Gestion des multi-lignes
    			cl = cl + 1
    			if (cl Mod 2) = 0 then
    				classe = "off"
    			else
    				classe = "on"
    			end if%>
    			<tr class="<%=classe%>">
    				<td class="colonne chiffre"><%=rs.fields("fournisseur_id")%></td>
    				<td class="colonne texte"><a href="r_extrait_fournisseur.asp?fournisseur=<%=server.urlencode(rs.fields("fournisseur_nom"))%>&debut=<%=debut%>&fin=<%=fin%>"><%=rs.fields("fournisseur_nom")%></a>&nbsp;</td>
    				<td class="colonne chiffre"><%=FormatNumber(rs.fields("restant_euro_euro"),2)%> $</td>
    				<td class="colonne chiffre"><%=FormatNumber(rs.fields("restant_euro_usd"),2)%> &euro;</td>
    				<td class="colonne chiffre"><a href="r_balance_fournisseurs_details.asp?fin=<%=fin%>&bureau=<%=bureau%>&compte=<%=compte%>&fournisseur_id=<%=rs.fields("fournisseur_id")%>&fournisseur_nom=<%=replace(rs.fields("fournisseur_nom"),"&","%26")%>&fournisseur_categorie=<%=fournisseur_categorie%>"><%=FormatNumber(rs.fields("Montant_Du"),2)%> &euro;</a></td>
    			</tr>
    			<%
    			total = total + cdbl(rs.fields("Montant_Du"))
    			rs.movenext
    		loop%>
    		<tr class="separation">
    			<td colspan="2" class="separation colonne">Total</td>
    			<td class="colonne chiffre"><%=FormatNumber(total,2)%> &euro;</td>
    		</tr>
    	</table>
    </div>
    <%
    AL_Fermer (RS)
    %>
    <br />

    et de temps en emps, j'ai également ce message si j'attends 2 - 3 min :

    Microsoft OLE DB Provider for ODBC Drivers error '80040e21'

    ODBC driver does not support the requested properties.



    Je pense que ceci est dû aux tables temporaires que je drop à chaque chargement de ma page ( drop table #b par exemple)
    Y'a t'il un moyen de contourner le probleme ?

  4. #4
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Tu pourrais formater la requete SQL pour la rendre lisible?

    Que fait "AL_Selectionner (sql, 0, 1, 0)"

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  5. #5
    Membre éclairé Avatar de stolx_10
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 374
    Par défaut
    http://www.developpez.net/forums/d64...-temportaires/

    Résolu

    désolé

    Al_Sélectionner est une fonction créée par le bureau dans lequel je travaille, j'ai pas regardé plus en détails.

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

Discussions similaires

  1. Requete SQL avec Rand()
    Par leloup84 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 03/02/2006, 16h41
  2. requete SQL avec valeur max
    Par oeil de nuit dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/01/2006, 08h58
  3. REQUETE SQL AVEC HAVING
    Par juju_77 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 05/08/2005, 09h49
  4. Probleme de requete SQL avec un champs date
    Par ju360modena dans le forum ASP
    Réponses: 5
    Dernier message: 16/06/2005, 11h18
  5. [JDBC] retour de requete sql avec valeur NULL
    Par maxxou dans le forum JDBC
    Réponses: 3
    Dernier message: 13/09/2004, 14h40

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