Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1043 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Access][ADODB] Petit soucis avec les BOF et EOF

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Access][ADODB] Petit soucis avec les BOF et EOF

n°730432
lebowski
Posté le 18-05-2004 à 16:00:17  profilanswer
 

Bonjour,
 
Une petite question pour agrementer votre apres-midi :
 
Voici le code que j'ai tape.

Code :
  1. Dim Conn As New ADODB.Connection
  2.     Dim cnn As New ADODB.Command
  3.     Dim rs As New ADODB.Recordset
  4.     'open connection
  5.    
  6.     Conn.Open "Provider = Microsoft.jet.OLEDB.4.0 ; data source = C:\temp\Lebowski\Hours Project\Projet\TablesLink.mdb"
  7.    
  8.     'record parameters and open recordset
  9.     Set cnn.ActiveConnection = Conn
  10.     cnn.CommandType = adCmdText
  11.     cnn.CommandText = "SELECT employee FROM employee" //une requete au hasard
  12.     Set rs = cnn.Execute
  13.     With rs
  14.         Do Until .EOF
  15.         Affichage.Caption = rs.GetString
  16.         .MoveNext
  17.         Loop
  18.     End With


Des que je l'execute, rien ne se passe (alors que j'aimerais bien avoir la liste des employers).
Si par hasard j'enleve le bloc :

Code :
  1. With rs
  2.         Do Until .EOF
  3.         Affichage.Caption = rs.GetString
  4.         .MoveNext
  5.         Loop
  6.     End With


Il m'affiche une erreur 3021 (Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record).
'oila, 'oila, si quelqu'un peut m'expliquer (ou a defaut corriger) ce petit bout de code, j'en serai au comble de ma bonne humeur.
 
D'avance, merci beaucoup.
 
Lebowski
 
PS : Romania, Trezeste-te (c'est du roumain...)


Message édité par lebowski le 18-05-2004 à 16:02:22
mood
Publicité
Posté le 18-05-2004 à 16:00:17  profilanswer
 

n°731115
lebowski
Posté le 19-05-2004 à 10:22:24  profilanswer
 

Bonjour,
 
Voila, j'obtiens toujours le meme probleme. Apres creation des connexions et definition du recordset, voici ce que j'ai tape pour tenter de recuperer ce qu'il y a dans le recordset :

Code :
  1. 'le recordset est rs
  2.     If rs.EOF Then
  3.         MsgBox "EOF"
  4.     Else
  5.     If rs.BOF Then
  6.         MsgBox "BOF"
  7.     Else
  8.     Do While Not rs.EOF
  9.         MsgBox rs("employee.FIRST_NAME" )
  10.     Loop
  11.     End If
  12.     End If
  13.    
  14.     Affichage.Caption = rs.GetString


Des que ce code est execute, il m'affiche "EOF", et ensuite le meme message d'erreur vu precedemment (ce qui parait assez logiquem compte tenu du message "EOF" ).
Quel en est la raison ? Mon recordset est vide ? Je suis arrive a la fin du recordset et il faut que lui precise d'aller au debut ?
 
Voila quelques interrogations existentielles qui mettent bien a mal ma conscience.
 
Merci d'avance.
 
Lebowski

n°880513
Amoul Solo
Posté le 23-10-2004 à 00:22:07  profilanswer
 

Bonsoir,
 
Le problème est que vous ne pouvez pas accéder à la valeur d'un champ si la recordset est vide ou que le pointeur de recordset a atteint une limite (EOF ou BOF à True).
 
Le problème dans le premier Algo vient de la boucle "Do Until", même si le recordset est vide, il fera un tour de boucle, c'est dans la structure. En revanche dans le second exemple vous tester votre recordset, mais vous accedez à la valeur du champ en ligne 15 et vous obtenez une erreur. Je vous conseille la structure suivante :  
With rs  
    While Not .EOF  
        Affichage.Caption = rs.GetString  
        .MoveNext  
    Wend
End With  
 
Elle offre l'avantage de tester d'abord l'état de la condition (Not .Eof) donc si le recordset est vide, vous n'entrerez pas dans la boucle.
 
Voilà


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Access][ADODB] Petit soucis avec les BOF et EOF

 

Sujets relatifs
pb references access[Access / Sql] Comment mettre un critere sur les 3 dernieres semaines
[XML / XLS] C++ : Soucis de feuille XSL !access: aucun chiffre ne s'affichent dans mes états
[Access / VB] Un petit coup de pouce pour un debutant (bis)[Access / VB] Un p'tit coup de pouce pour debuter
Petit Probleme de programmation[Access] Recuperer tous les champs de la semaine derniere
pb access help me 
Plus de sujets relatifs à : [Access][ADODB] Petit soucis avec les BOF et EOF


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR