Erreur sur "bd.open"

cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 - 22 juin 2009 à 08:28
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 - 25 juin 2009 à 20:23
bonjour
j'ai un code pour remplir une progressbar par rapport à une base ACCESS
mais j'ai une erreur sur "bd.open"
le message d'erreur est "erreur de compilation,fonction ou variable attendue"

Private Sub DoRemplir()
          
     bd.ConnectionString = App.Path & "\BD\Film.mdb"
     Sql = "SELECT * FROM Film WHERE Code ORDER BY code_film ASC;"
    Set Rs = bd.Open(Sql, adOpenDynamic, adLockOptimistic)
             bd.Open
     MaxiBar = Rs.RecordCount
     
       bd.Close
    
     TailleIncrement = 196 / MaxiBar
    
     Bar.Width = 0
    
     For Remplir = 1 To MaxiBar
         
          LblNotif.Caption = " Chargement: " & Remplir & "/" & MaxiBar & "."
    
          Bar.Width = Bar.Width + TailleIncrement
          
        
          For Pause = 0 To 300000 Step 1
          Next
             Next Remplir
    End Sub
merci
petchy

17 réponses

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
22 juin 2009 à 19:58
Qu'est-ce que tu cherches à charger ?
Sinon le code corrigé est là :
' --------------------------METTRE CECI DANS UN MODULE -----------------------------
Option Explicit
Public Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)

Dim db As ADODB.Connection
Dim rs As ADODB.Recordset, SQL As String

Public Function OpenDB() As Boolean
'Retourne TRUE si erreur, sinon FALSE.
   db.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & App.Path & "\BD\Film.mdb;Uid=Admin;Pwd=;"
   On Error Resume Next
       db.Open       If Err Then OpenDB True 'Else OpenDB False
   On Error GoTo 0
End Function

Public Function CloseDB() As Boolean
'Retourne TRUE si erreur, sinon FALSE.
   On Error Resume Next
       db.Close       If Err Then CloseDB True 'Else OpenDB False
   On Error GoTo 0
End Sub
'-----------------------------------------------------------------------------------

Option Explicit

Private Sub DoRemplir()
   If OpenDB Then
       MsgBox "Erreur lors de l'ouverture de la base de données ...", vbCritical, "Erreur"
       Exit Sub
   End If
   
   SQL = "SELECT * FROM Film WHERE Code ORDER BY code_film ASC;"
   Set rs = db.Execute(SQL)
   MaxiBar = rs.RecordCount
   rs.Close
   
   If CloseDB Then MsgBox "Erreur lors de la fermeture de la base de données ...", vbExclamation, "Erreur"
   
   TailleIncrement = 196 / MaxiBar
   Bar.Width = 0

   Dim Remplir As Integer
   For Remplir = 1 To MaxiBar
       LblNotif.Caption = " Chargement: " & Remplir & "/" & MaxiBar & "."
       Bar.Width = Bar.Width + TailleIncrement
       Sleep 500
   Next Remplir
End Sub

, ----
[../code.aspx?ID=41455 Syntax color by Renfield]
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
22 juin 2009 à 20:01
J'avais oublié l'explication : dimensionne toutes tes variables, et utilise les fonctions de ADODB correctement (db.Open ouvre la base, mais n'exécute pas un query, par exemple)

Et un autre oubli de ma part, le début du code du formulaire :
Option Explicit

Private Sub DoRemplir()
   Dim MaxiBar As Integer
   If OpenDB Then
       MsgBox "Erreur lors de l'ouverture de la base de données ...", vbCritical, "Erreur"
       Exit Sub
   End If , ----
[../code.aspx?ID=41455 Syntax color by Renfield]
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
22 juin 2009 à 21:19
bonsoir
merci pour ta réponse,mais j'ai une erreur 91
"variable objet ou variable bloc with non définie" sur la ligne en rouge
Public Function OpenDB() As Boolean
'Retourne TRUE si erreur, sinon FALSE.
   db.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & App.Path & "\BD\Film.mdb;Uid=Admin;Pwd=;"
   On Error Resume Next
       db.Open       If Err Then OpenDB True 'Else OpenDB False
   On Error GoTo 0
End Function

@ plus
petchy
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
22 juin 2009 à 21:49
D'abord il faut que tu ajoutes la référence Microsoft ActiveX Data Object 2.8 Library.
Et mon code n'était pas bon, là ça devrait fonctionner :

Public Function OpenDB() As Boolean
'Retourne TRUE si erreur, sinon FALSE.
  CloseDB
  Set db = New ADODB.Connection
  db.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & App.Path & "\BD\Film.mdb;Uid=Admin;Pwd=;"
  On Error Resume Next
      db.Open      If Err Then OpenDB True 'Else OpenDB False
  On Error GoTo 0
End Function

, ----
[../code.aspx?ID=41455 Syntax color by Renfield]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
23 juin 2009 à 03:43
bonjour
j'ai toujours une erreur sur "variable objet ou variable bloc with non définie",j'ai mis la référence Microsoft ActiveX Data Object 2.8 Library
Set rs = db.Execute(SQL)
bonne journée
petchy
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
24 juin 2009 à 08:55
Là ça doit être bon :
'------------------------------- DANS LE MODULE -------------------------------
Option Explicit
Public Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)

Public db As ADODB.Connection

Public Function OpenDB() As Boolean
'Retourne TRUE si erreur, sinon FALSE.
 CloseDB
 Set db = New ADODB.Connection
 db.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & App.Path & "\BD\Film.mdb;Uid=Admin;Pwd=;"
 On Error Resume Next
     db.Open     If Err Then OpenDB True 'Else OpenDB False
 On Error GoTo 0
End Function

Public Function CloseDB() As Boolean
'Retourne TRUE si erreur, sinon FALSE.
  On Error Resume Next
      db.Close      If Err Then CloseDB True 'Else OpenDB False
  On Error GoTo 0
End Sub
'------------------------------------------------------------------------------

Option Explicit
Dim rs As ADODB.Recordset, SQL As String

Private Sub DoRemplir()
  If OpenDB Then
      MsgBox "Erreur lors de l'ouverture de la base de données ...", vbCritical, "Erreur"
      Exit Sub
  End If
 
  Dim MaxiBar As Integer
  SQL = "SELECT * FROM Film WHERE Code ORDER BY code_film ASC;"
  Set rs = db.Execute(SQL)
  MaxiBar = rs.RecordCount
  rs.Close
 
  If CloseDB Then MsgBox "Erreur lors de la fermeture de la base de données ...", vbExclamation, "Erreur"
 
  Dim TailleIncrement As Integer
  TailleIncrement = 196 / MaxiBar
  Bar.Width = 0

  Dim Remplir As Integer
  For Remplir = 1 To MaxiBar
      LblNotif.Caption = " Chargement: " & Remplir & "/" & MaxiBar & "."
      Bar.Width = Bar.Width + TailleIncrement
      Sleep 500
  Next Remplir
End Sub
, ----
[../code.aspx?ID=41455 Syntax color by Renfield]
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
24 juin 2009 à 19:07
bonsoir

maintennant j'ai une erreur
"pilote ODBC microsoft trop peu de parametres 1 attendu"
et il me surligne Set Rs = db.Execute(SQL)
je ne comprends pas
merci pour ton aide
petchy
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
24 juin 2009 à 19:28
Il sert à quoi, le WHERE Code ?
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
24 juin 2009 à 20:11
Re
je viens de corriger l'erreur,et j'ai mis
SQL = "SELECT * FROM Film WHERE code_film ORDER BY code_film ASC;"
mais la barre de défilement ne se remplis pas
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
24 juin 2009 à 22:26
Remplace Sleep 500 par 'Sleep 500.
Mais qu'est-ce que tu veux faire avec ce code ?
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
25 juin 2009 à 03:46
bonjour
toujours pareil,la barre de défilement ne se remplis pas
en fait c'est au lancement du programme faire une progressBar et faire défiler le nombre d'enregistrement .
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
25 juin 2009 à 10:01
Si le code que tu m'as donné est complet, ça ne sert à rien de mettre une progressbar.
Tout est fait en une fois !
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
25 juin 2009 à 13:38
en fait je voulais dire qu'au lancement du prog faire défilé la speudo barre de progression (MaxiBar),
mais c'est la le probleme j'ai plus d'erreur,mais la barre de défilement ne se remplis pas
petchy
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
25 juin 2009 à 19:05
Si c'est pour faire perdre du temps à l'utilisateur (pour rien, en plus) autant ne pas le faire.
Mais combien d'enregistrements as-tu dans la table ?
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
25 juin 2009 à 19:09
un peu plus de 200 enregistrement,en fait l'utilisateur c'est moi,c'est un prog que j'ai fait pour gerer les dvd.
voila.
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
25 juin 2009 à 19:19
Avec 200 entrées, l'incrément est de 0,96. Vu qu'on prend que la partie entière (0), l'incrément est de 0.
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
25 juin 2009 à 20:23
ok,donc on ne peut rien faire tans pis
mais je te remercie beaucoup pour ta disponibilité
bonne soirée
petchy
0
Rejoignez-nous