[ASP] Objet RecordCount buggé ?

Objet RecordCount buggé ? [ASP] - ASP - Programmation

Marsh Posté le 20-06-2003 à 15:05:34    

J'avais besoin de connaître le nombre de lignes d'une table, alors je me suis dis je vais utiliser un petit recordcount ...
 
Mon environnement de dév : asp + oracle
 
Il me rend -1 ...
Hum bizarre je fais quelques recherches sur le net et je vois quelques indications à faire :  
 

Code :
  1. <%
  2. ' Création de la connection au SGBD
  3. ...
  4. ' Création de l'objet Recordset
  5. Set objRS = Server.CreateObject("ADODB.Recordset" )
  6. ' paramétrage du type de curseur
  7. objRS.CursorType = 3
  8. ' paramétrage du type de verrou
  9. objRS.LockType = 1
  10. ' ouverture du Recordset
  11. objRS.Open query, objConn
  12. %>


 
Mais malgrès ces précisions, ca ne fonctionne toujours pas  :heink:


Message édité par -bigfoot- le 20-06-2003 à 15:06:05
Reply

Marsh Posté le 20-06-2003 à 15:05:34   

Reply

Marsh Posté le 20-06-2003 à 16:23:14    

essaye plutot ceci:
 
<%  
Set oRs = oConnection.Execute ("SELECT count(champ) FROM table" )
Response.Write oRs(0)
[fermeture de oRs]
%>


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 20-06-2003 à 16:24:51    

C'est ce que j'ai fait :jap:
mais bon bizarre, encore du microsoft ... entre le vb et l'asp j'en compte pas mal de bugs  :ouch:

Reply

Marsh Posté le 20-06-2003 à 16:26:11    

essaye plutot d'utiliser les requêtes sql au lieu des paramètres de l'objet recordset.
le sql c'est + simple et y'a moins de problèmes apparemment.


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 20-06-2003 à 19:08:55    

KB Microsoft :
 
Il ne s'agit pas d'un bug, le bug, c'est le gars qui se sert d'un objet sans en lire la doc.
 

PRB: ADO: Recordcount May Return -1  
 
Q194973
 
 
--------------------------------------------------------------------------------
The information in this article applies to:
 
ActiveX Data Objects (ADO), versions 1.5, 2.0, 2.1 SP2, 2.5, 2.6
 
--------------------------------------------------------------------------------
 
 
SYMPTOMS
When you request the RecordCount for a serverside recordset, a -1 may return. This occurs with ActiveX Data Objects (ADO) version 2.0 or later when the CursorType is adOpenForwardonly or adOpenDynamic. This occurs with ADO 1.5 only when the cursortype is adOpenForwardonly. Testing with the OLEDB provider for JET and SQL Server produces varying results, depending on the provider.  
 
Providers may not support some CursorTypes. When you select a CursorType that is not supported, the provider should select the CursorType closest to what you request. Please refer to the documentation that comes with your provider. Also, please note that not all combinations of LockType and CursorType work together. Changing a LockType may force a change in the CursorType. Be sure to use debug to check the value of CursorType when conducting tests with your OLEDB provider.  
 
 
 
CAUSE
The number of records in a dynamic cursor may change. Forward only cursors do not return a RecordCount.  
 
 
 
RESOLUTION
Use either adOpenKeyset or adOpenStatic as the CursorType for server side cursors or use a client side cursor. Client side cursors use only adOpenStatic for CursorTypes regardless of which CursorType you select.  
 
 
 
STATUS
This behavior is by design.  
 
 
 
MORE INFORMATION
 
Steps to Reproduce Behavior
Open a standard .exe project in Visual Basic.
 
 
From the Project menu, choose References.  
 
 
Select the Microsoft Active Data Object Library.  
 
 
Paste the following code in the form code window:
 
 
 
       Option Explicit
       Dim rs As ADODB.Recordset
 
       Private Sub Form_Load()
        'set up rs
         Set rs = New ADODB.Recordset
         rs.CursorLocation = adUseServer
         rs.Open "Select ProductID from products", & _
                   "Provider=Microsoft.Jet.OLEDB.3.51;" & _
                   "Data Source=d:\vb5_win95\nwind.mdb", _
                    adOpenDynamic, adLockUnspecified
 
         Debug.Print rs.RecordCount
       End Sub  
Replace the preceding Data Source with a Data Source on your computer. Run the preceding form and note the record count. Change the CursorType to adOpenForwardonly and note the record count.  
 
 
Change the CursorLocation to adUseClient and experiment with the different CursorTypes. In all cases the correct record count returns.
 
 
 
 
 
REFERENCES
ActiveX Data Objects (ADO) Help; search on: "CursorType Property."  
 
Additional query words:  
 
Keywords : kbADO150 kbADO200 kbDatabase kbVBp500 kbVBp600 kbGrpVBDB kbGrpMDAC kbDSupport kbADO210sp2 kbMDAC210SP2 kbMDAC250 kbADO250 kbMDAC260 kbADO260  
Issue type : kbprb  
Technology : kbAudDeveloper kbADOsearch  
 
 
Last Reviewed: October 20, 2000
© 2001 Microsoft Corporation. All rights reserved. Terms of Use.
 
 
 
 
--------------------------------------------------------------------------------
Send feedback to MSDN.Look here for MSDN Online resources.


Message édité par MagicBuzz le 20-06-2003 à 19:10:26
Reply

Marsh Posté le 20-06-2003 à 19:38:33    

Citation :


Il ne s'agit pas d'un bug, le bug, c'est le gars qui se sert d'un objet sans en lire la doc.  


 
 
C'est limite agressif comme réponse ...
Enfin si ca marche pas avec Oracle, c'est encore Microsoft qui est dépassé ...


Message édité par -bigfoot- le 20-06-2003 à 19:38:57
Reply

Marsh Posté le 20-06-2003 à 19:46:17    

-BigFoot- a écrit :

Citation :


Il ne s'agit pas d'un bug, le bug, c'est le gars qui se sert d'un objet sans en lire la doc.  


 
 
C'est limite agressif comme réponse ...
Enfin si ca marche pas avec Oracle, c'est encore Microsoft qui est dépassé ...


C'est pas que ça marche pas avec Oracle, c'est Oracle qui n'est pas foutu de faire des drivers ODBC qui tiennent la route.
 
Les derniers drivers OLE d'Oracle et les drivers ODBC de M$ depuis Windows 2000 le supportent très bien.

Reply

Marsh Posté le 20-06-2003 à 19:49:18    

en terme de vitesse et de stabilité, il vaut mieux utiliser les collection de l'objet recordset ou passer par une requête sql? (par exemple pour un insert, ou un count)


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 20-06-2003 à 20:06:25    

Tout dépends du nombre, de la façon dont la base gère les locks, et tout un tas de trucs.
 
En général, pour de l'ASP/PHP, il vaut mieu utiliser des requêtes unitaires, pour une appli client/server, les objets ADO, en mode persistant.


Message édité par MagicBuzz le 20-06-2003 à 20:06:36
Reply

Marsh Posté le 20-06-2003 à 20:34:55    

+1 avec MagicBuzz :jap:


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed