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 :

Limitations des Recordsets pour une connection?


Sujet :

ASP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 41
    Points : 35
    Points
    35
    Par défaut Limitations des Recordsets pour une connection?
    Voila, je me demandais si il y avait une limite pour le nombre de Recordset qui sont ouvert a une connexion en meme temps.

    Je me pose cette question parce que j'ai une page qui utilise plusieurs recordset, et lorsque j'essais d'en ouvrir un quatrieme il me sort un message d'erreur qui dit :

    Error Type:
    ADODB.Recordset (0x800A0E7D)
    The connection cannot be used to perform this operation. It is either closed or invalid in this context.

    Pourtant je ne ferme pas ma connection avant la fin de la page. De plus, si je ferme mes recordset deja existant avant d'ouvrir le quatrieme (RS.close), j'ai encore la meme erreur.

    Alors, pour tenter de contourner le probleme, j'ai essayé d'ouvrir une deuxieme connection, mais j'ai un autre message d'erreur au moment ou j'ouvre la deuxieme connection :

    Error Type:
    Provider (0x80004005)
    Unspecified error

    Donc je suspecte que je ne peux pas ouvrir deux connections en meme temps sur la meme base de données, ce qui ne m'aide vraiment pas a regler mon probleme hehe.

    Quelqu'un a une idée qui pourrait m'aider un petit peu?

  2. #2
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Bonjour

    Plusieurs connexions sur la même base, je ne sais pas, mais ça n'a, je pense, aucun interet.

    Par contre, on peut ouvrir plusieurs recordset sur la même connexion, je t'assure. (j'en abuse assez comme çà !!). C'est la première fois que je vois cette erreur.

    Faudrait voir ton code, ya sans doute autre chose (genre un update en cours)

    c'est quoi, comme sgbd ?


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 41
    Points : 35
    Points
    35
    Par défaut
    Merci pour ta réponse!

    le sgbd est Access 2000 et je suis sous Windows2000.

    Pour ce qui est d'ouvrir plusieurs connections a la meme base je pense aussi que ca n'a aucun interet, mais j'ai tout de meme tenté le coup pour essayer de contourner le probleme hehe.

    Effectivement, le nombre de recordset ne semble pas etre un probleme puisque je recois la meme erreur meme si j'essais d'ouvrir le recordset problematique tout juste apres avoir ouvert la connection.

    Pour ce qui est des updates, je n'en fais pas, mais il est vrai que je fait quelques inserts dans ma page, mais meme si j'ouvre mon recordset avant d'en faire un ou avant d'ouvrir un autre recordset, j'ai la meme erreur.

    voici le code qui me donne des problemes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RSRecap.open "SELECT * FROM tbl_Recap WHERE ""StartPoint"" = '" & RouteStart & "' AND ""EndPoint"" = "' & RouteEnd & "'", oConn
    RSYTD.open "SELECT * FROM tbl_Recap WHERE ""StartPoint"" = '" & RouteStart & "' AND ""EndPoint"" = "' & RouteEnd & "'", oConn
    Ces deux recordset ne veulent absolument rien savoir, peu importe ou je place ces lignes dans mon code. A preciser que ma connection est valide puisque je l'utilise pour ouvrir 3 autres recordset sans probleme.

    voila le code de ma page :

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    <%
    Set oConn = Server.CreateObject("ADODB.connection")
    oConn.Open "Driver={Microsoft Access Driver (*.mdb)};"&_
    	"DBQ=mabase.mdb;"
     
    Set RS=Server.CreateObject("ADODB.recordset")
    Set RSRailcars=Server.CreateObject("ADODB.recordset")
    Set RSRoutes=Server.CreateObject("ADODB.recordset")
    Set RSRecap=Server.CreateObject("ADODB.recordset")
    Set RSYTD=Server.CreateObject("ADODB.recordset")
     
    n=0
     
    oConn.Execute("DELETE * FROM tbl_YearRecap")
    p = UBound(tab_Trajet,2)
    for q = 0 to p-1
    	qry_sql = "INSERT INTO tbl_YearRecap (Equipment_Number, Trace_ID, Depart_Plant, Arrive_Depot, Depart_Depot, Arrive_Plant, Finished, Plant, Depot)" &_
    	" VALUES ('" & tab_Trajet(0,q) & "', '" & tab_Trajet(6,q) & "', '" & CDate(tab_Trajet(1,q)) & "', '" & CDate(tab_Trajet(2,q)) & "', '" & CDate(tab_Trajet(3,q)) & "', '" & CDate(tab_Trajet(4,q)) & "', '" & tab_Trajet(5,q) & "', '" & tab_Trajet(7,q) & "', '" & tab_Trajet(8,q) & "')"
    	oConn.execute(qry_sql)
    next
     
    for p=0 to UBound(tab_Routes,2)
     
    	RouteStart = tab_Routes(0,p)
    	RouteEnd = tab_Routes(1,p)
     
    	DernierRailcar = tab_Trajet(0,0)
    	n=0
    	for j=0 to UBound(tab_Trajet,2)
    		if tab_Trajet(0,j) <> DernierRailcar then
    			n=n+1
    			DernierRailcar = tab_Trajet(0,j)
    			RailcarChanged = 1
    		else
    			RailcarChanged = 0
    		end if
     
    		if Month(tab_Trajet(1,j)) = 1 and tab_Trajet(5,j) = 1 and tab_Trajet(7,j) = RouteStart and tab_Trajet(8,j) = RouteEnd then
    			NbJanvier = NbJanvier + 1															'Nombre de routes en janvier augmente de 1
    			TransitJanvier = TransitJanvier + (tab_Trajet(2,j) - tab_Trajet(1,j))				'On calcul le temps de transit entre plant et depot
    			IdleDepotJanvier = IdleDepotJanvier + (tab_Trajet(3,j) - tab_Trajet(2,j))			'Calcul du temps d'attente au depot
    			ReturnJanvier = ReturnJanvier + (tab_Trajet(4,j) - tab_Trajet(3,j))					'Calcul du temps de retour vers le plant
    			if j=0 or RailcarChanged = 1 then
    				IdlePlantJanvier = 0															'Si c'est le premier voyage du wagon en janvier, on ne calcul pas le temps d'attente au plant
    			else
    				IdlePlantJanvier = IdlePlantJanvier + (tab_Trajet(1,j) - tab_Trajet(4,j-1))	'Calcul du temps d'attente au Planr
    			end if
    		end if
     
    		'Ici je refais le if plusieurs fois, une pour chaque mois de l'année.
     
    	next
     
    	NbTot = NbJanvier + NbFevrier + NbMars + NbAvril + NbMai + NbJuin + NbJuillet + NbAout + NbSeptembre + NbOctobre + NbNovembre + NbDecembre
    	TransitTot = TransitJanvier + TransitFevrier + TransitMars + TransitAvril + TransitMai + TransitJuin + TransitJuillet + TransitAout + TransitSeptembre + TransitOctobre + TransitNovembre + TransitDecembre
    	IdleDepotTot = IdleDepotJanvier + IdleDepotFevrier + IdleDepotMars + IdleDepotAvril + IdleDepotMai + IdleDepotJuin + IdleDepotJuillet + IdleDepotAout + IdleDepotSeptembre + IdleDepotOctobre + IdleDepotNovembre + IdleDepotDecembre
    	ReturnTot = ReturnJanvier + ReturnFevrier + ReturnMars + ReturnAvril + ReturnMai + ReturnJuin + ReturnJuillet + ReturnAout + ReturnSeptembre + ReturnOctobre + ReturnNovembre + ReturnDecembre
    	IdlePlantTot = IdlePlantJanvier + IdlePlantFevrier + IdlePlantMars + IdlePlantAvril + IdlePlantMai + IdlePlantJuin + IdlePlantJuillet + IdlePlantAout + IdlePlantSeptembre + IdlePlantOctobre + IdlePlantNovembre + IdlePlantDecembre
     
     
    	if NbJanvier <> 0 then
    		TransitJanvier = TransitJanvier / NbJanvier
    		IdleDepotJanvier = IdleDepotJanvier / NbJanvier
    		ReturnJanvier = ReturnJanvier / NbJanvier
    		IdlePlantJanvier = IdlePlantJanvier / NbJanvier
    		tab_Recap(1,0) = TransitJanvier
    		tab_Recap(1,1) = IdleDepotJanvier
    		tab_Recap(1,2) = ReturnJanvier
    		tab_Recap(1,3) = IdlePlantJanvier
    		tab_Recap(1,4) = TransitJanvier + IdleDepotJanvier + ReturnJanvier + IdlePlantJanvier
    	end if
     
    	'Ici aussi je repete ce code pour chaque mois de l'année
     
    	if NbTot <> 0 then
    		TransitTot = TransitTot / NbTot
    		IdleDepotTot = IdleDepotTot / NbTot
    		ReturnTot = ReturnTot / NbTot
    		IdlePlantTot = IdlePlantTot / NbTot
    		TurnAroundTot = TransitTot + IdleDepotTot + ReturnTot + IdlePlantTot
    		tab_Recap(13,0) = TransitTot
    		tab_Recap(13,1) = IdleDepotTot
    		tab_Recap(13,2) = ReturnTot
    		tab_Recap(13,3) = IdlePlantTot
    		tab_Recap(13,4) = TurnAroundTot
    	end if
     
    	oConn.execute("DELETE * FROM tbl_Recap")
     
    	for i = 1 to 12
    		strSQL = "INSERT INTO tbl_Recap (Months_Number, Transit, Idle_Depot, Return, Idle_Plant, Turnaround, StartPoint, EndPoint)" &_
    		" VALUES ('" & i & "', '" & CLng(tab_Recap(i,0)) & "', '" & CLng(tab_Recap(i,1)) & "', '" & CLng(tab_Recap(i,2)) & "', '" & CLng(tab_Recap(i,3)) & "', '" & CLng(tab_Recap(i,4)) & "', '" & RouteStart & "', '" & RouteEnd & "')"
    		oConn.execute(strSQL)
    	next
     
    	oConn.execute("DELETE * FROM tbl_YearRecap")
     
    	str_SQL = "INSERT INTO tbl_RecapYTD (TransitYTD, Idle_DepotYTD, ReturnYTD, Idle_PlantYTD, TurnaroundYTD, StartPoint, EndPoint)" &_
    	" VALUES ('" & CLng(tab_Recap(13,0)) & "', '" & CLng(tab_Recap(13,1)) & "', '" & CLng(tab_Recap(13,2)) & "', '" & CLng(tab_Recap(13,3)) & "', '" & CLng(tab_Recap(13,4)) & "', '" & RouteStart & "', '" & RouteEnd & "')"
    	oConn.execute(str_SQL)
     
    'C'est ici le probleme
    	RSRecap.open "SELECT * FROM tbl_Recap WHERE ""StartPoint"" = '" & RouteStart & "' AND ""EndPoint"" = "' & RouteEnd & "'", oConn
    	RSYTD.open "SELECT * FROM tbl_RecapYTD WHERE ""StartPoint"" = '" & RouteStart & "' AND ""EndPoint"" = "' & RouteEnd & "'", oConn
     
    	response.write("<p><table align=center frame=border>")
    	response.write("<tr><th>Road</th>")
    	response.write("<th>Idle at Plant</th>")
    	response.write("<th>Transit</th>")
    	response.write("<th>Idle at DST</th>")
    	response.write("<th>Return</th>")
    	response.write("<th>Turnaround</th></tr>")
    	response.write("<tr><td>YTD</td><td>" & RSYTD(5) & "</td><td>" & RSYTD(2) & "</td>")
    	response.write("<td>" & RSYTD(3) & "</td><td>" & RSYTD(4) & "</td><td>" & RSYTD(6) & "</td></tr>")
     
    	for i = 1 to UBound(tab_Recap)-1
    		response.write("<tr><td>" & RouteStart & " - " & RouteEnd & "</td>")		'La route
    		response.write("<td>" & RSRecap(4) & "</td><td>")
    		response.write(RSRecap(5) & "</td><td>")
    		response.write(RSRecap(6) & "</td><td>")
    		response.write(RSRecap(7) & "</td><td>")
    		response.write(RSRecap(3) & "</td></tr>")
    	next
     
    	RSRecap.close
    	RSYTD.close
     
    next
     
    oConn.close
    Set RSRailcars = Nothing
    Set RS = Nothing
    Set RSRoutes = Nothing
    Set RSRecap = Nothing
    Set RSYTD = Nothing
    %>
    Je n'ai pas mis tout mon code puisque j'en ai pour plus de 800 lignes et je me suis dit que ca ferait un peu lourd hehe. J'ai enlever tout ce qui touche aux autres recordset, puisqu'ils ne me servent qu'a remplir des tableaux, mais j'ai laisser toute les commandes SQL qui s'executent. J'ai aussi enlever tout ce qui initialisations de variables et tout le code redondant. Mais étant donné le fait que meme si je tente d'ouvrir les recordset tout juste apres avoir ouvert la connection j'ai la meme erreur, je ne pense pas que ce soit un probleme d'insert ou une autre commande qui n'a pas finit de s'executer.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 41
    Points : 35
    Points
    35
    Par défaut
    Bon, probleme résolu!

    J'avais fait une erreur dans mon SELECT, j'ai interverti un " et un ' .

    Dire que ca fait 2 jours que je passe la-dessus!

    Honte a moi! hehe

    Paix et Joie dans le monde! (fallait bien que je profite de ma stupidité pour au moins passer un message de paix et d'amour )

    Aller, salut tout le monde!

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

Discussions similaires

  1. Comment faire des etats pour une application web ?
    Par ovh dans le forum Autres outils décisionnels
    Réponses: 6
    Dernier message: 06/07/2021, 03h25
  2. [C#] Format des dates pour une ComboBox...
    Par frechy dans le forum Windows Forms
    Réponses: 5
    Dernier message: 07/01/2005, 17h08
  3. Réponses: 2
    Dernier message: 05/07/2004, 17h50
  4. Octets recus et envoyés pour une connection
    Par portu dans le forum Web & réseau
    Réponses: 8
    Dernier message: 18/11/2003, 12h43
  5. Ports disponibles pour une connection
    Par Walm dans le forum Développement
    Réponses: 7
    Dernier message: 06/10/2003, 22h10

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