probleme movefirst

probleme movefirst - VB/VBA/VBS - Programmation

Marsh Posté le 04-04-2005 à 09:11:51    

je travaille sur des pages asp et je fais des acces a une bdd MS SQL Server.
lorsque je parcours un recordset jusqu'à la fin et que je fais un movefirst ensuite, cela ne fonctionne pas.
code :  
if not recordset1 is nothing then
       while not rsPhasesAutorisees.eof
       ...
       recordset1.movenext
       wend
end if
 
recordset1.movefirst    
 
erreur :
Microsoft OLE DB Provider for ODBC Drivers
error '80040e18'
Impossible de redémarrer la position de l'ensemble de lignes.
 
qqu'un peut-il m'aider?

Reply

Marsh Posté le 04-04-2005 à 09:11:51   

Reply

Marsh Posté le 04-04-2005 à 09:33:11    

Salut,
 
Regarde du côté de la définition de ton recordset. Je n'ai pas vérifié mais il me semble que tu as une propriété définissant le Recordset en "forward only" (donc tu peux pas faire de movefirst).
 
En tous les cas, je pense que c'est bien que tu regardes de ce côté là!
 
A+

Reply

Marsh Posté le 04-04-2005 à 10:00:36    

c'est une propriété a modifier ds le code ou dans la base de données?
(Je n'ai pas la msdn et je n'arrive pas a trouver comment le faire dans le code)

Reply

Marsh Posté le 04-04-2005 à 11:23:28    

j'ai modifié la methode de connexion dans la methode "BolConnectDynamic" de ma dll qui gere l'ouverture de la base de donnees:
 
With pObjConnexion
            'Initialisation des parametres de connexion
            .Provider = "MSDASQL"
            .CursorLocation = adUseServer
'--------------------------------------------------------
'rajout
'--------------------------------------------------------
            .CursorType = adOpenDynamic
'--------------------------------------------------------
            .ConnectionString = ...
 
            'Ouverture de la base de données
            .Open
End With
 
et j'ai maintenant l'erreur suivante:
L'objet ne gère pas les arguments nommés - ClsDBObject.BolConnectDynamic
 
quelles sont les options que je dois ecrire pour enfin pouvoir faire un movefirst??

Reply

Marsh Posté le 04-04-2005 à 15:17:04    

Peut-être que le adOpenDynamic ne peut pas être un curseur côté serveur mais que côté client... Suis pas sûr mais...

Reply

Marsh Posté le 04-04-2005 à 15:22:23    

il me semble que si d'apres la page web suivante :
 
http://dev.mysql.com/tech-resource [...] locks.html
 

Reply

Marsh Posté le 04-04-2005 à 16:20:05    

Ah mais attends, je pense que l'erreur que tu fais, c'est de définir le CursorType au niveau de la connexion à la DB. Il me semble que ce serait plutôt une propriété à définir au niveau du recordset. Avant de l'ouvrir:
 
Dim rsToto as New ADODB.Recordset
With rsToto
  Set ActiveConnection = pObjConnexion
  .Source = "SELECT * FROM Toto"
  .LockType = adLockReadOnly '(ou autre)
  .CursorType = adOpenDynamic
  .Open
End With

Reply

Marsh Posté le 04-04-2005 à 17:11:51    

le pb c que je fais de l'asp sans vraiment le connaitre alors que j'ai appris l'asp.net.
bref il me colle une erreur lorsque je declare une variable avec un type.
ce qui fait que je declare tjrs les variables sans le type.
 
dim mavariable
 
pour revenir au probleme, je fais :
dim recordset1
 
ensuite je ne peux pas faire recordset1.CursorType puisque mon objet n'est pas créé, et je ne peux pas le faire lorsque g mis mes donnees dedans car le recorset est alors ouvert!

Reply

Marsh Posté le 05-04-2005 à 09:17:56    

Aie, ne pas déclarer ces variables... Ca c'est toujours qqch qui m'a fait peur!
 
Mais bon, peut être que tu peux faire qqch comme:
dim recordset1
 
et juste avant d'ouvrir le recordset et de setter ses propriétés, tu peux essayer de faire un  
Set recordset1 = New ADODB.Recordset
 
C'est équivalent à faire un Dim Recordset1 as New ADODB.Recordset mais pas de la même manière :-)
 
A+

Reply

Sujets relatifs:

Leave a Replay

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