[V B] problème recordSet

jerev -  
blux Messages postés 27993 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

J'ai un petit soucis avec mon code VB, quand j'excute ceci j'ai l'erreur suivante qui apparait :

"Varialbe objet ou variable de bloc With non définie"

voici le code :


Private Sub Retirer_Click()

On Error GoTo Err_Retirer_Click
Dim nomL As String
Dim nomL2 As String
Dim nomC As String
Dim nomC2 As String
Dim res As String

nomC = Nom_Centre.Value
nomC2 = Replace(nomC, "'", "''")

Dim BD As DAO.Database
Dim qteFinal As Integer
Dim qteSelec As Integer
Dim qte As Integer
Dim recor As DAO.recordset

nomL = Me.Form![Sous_Formulaire_Liste_Lot]![Nom_Lot].Value
nomL2 = Replace(nomL, "'", "''")

box = InputBox("Combien de lots voulez vous supprimer ?", "retirer " & name, "0")
qteSelec = Val(box)

Set recor = BD.OpenRecordset("Select Nom_Lot, Quantite from PossedeLot where Nom_Lot = '" & nomL2 & "' and Nom_Centre = '" & nomC2 & "';", dbOpenDynaset, dbFailOnError)

With recor
    res = ![Nom_Lot]
    qte = ![Quantite]
   
    If qteSelec <= qte Then
    
             If qte = qteSelec Then
                 req2 = "Delete Nom_Lot from PossedeLot where Nom_Lot = '" & nomL2 & "' and Nom_Centre = '" & nomC2 & "';"
             Else
                 qteFinal = qte - qteSelec
                  req2 = "Update PossedeLot set Quantite = " & qteFinal & " where Nom_Lot = '" & nomL2e & " and Nom_Centre = '" & nomC2 & "';"
             End If
             
        If MsgBox("Voulez-vous confirmer le retrait ?", vbQuestion + vbYesNo, "CONFIRMATION") = vbNo Then
          Me.Undo
          Cancel = True

        Else
          BD.Execute req2
          DoCmd.Close
        
        End If
    
    Else
    MsgBox "Quantité supérieure au nombre de lots existant"
   
    End If
 End With
    recordset.Close


 Exit Sub

End Sub



j'ai mis des MsgBox un peu partout pour verifier et j'ai vu que ca bug lors du set record = DAO.BaseOpenRecord("nom requete")

pourtant j'ai bien verifier les variables sont bonnes et tout ce qui est au dessus marche ...

si quelqu'un a une idée, j'ecoute !!!

merciiiii !!
A voir également:

4 réponses

jerev
 
up
0
blux Messages postés 27993 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
Salut,

tu as du code entre des descriptions de variables... C'est pas joli, mais ça marche...

Tout ça pour dire qu'à aucun moment ta variable BD ne prend de valeur, donc ACCESS ne va pas aimer...

Je te propose donc de faire autrement en référençant ton recordset avec la base de donnés courante (et ça t'évitera de déclarer BD)
Set recor = CurrentDb.OpenRecordset("....")

Ca ne pourra qu'aller mieux !
0
blux Messages postés 27993 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
Une 'tite astuce en passant :

lorsqu'ACCESS te signale une erreur et surligne en jaune la ligne incriminée, tu peux passer le pointeur de la souris sur les variables afin qu'il t'en affiche la valeur. Dans ton cas, tu aurais eu un truc comme ça :

https://www.cjoint.com/?eslC6o4LVD

Le pointeur souris n'apparait pas, car on est sur une capture, mais il est sur 'rs"...
0
jerev
 
erf oui effectivement j'avais oublier de déclarer ma variable BD ! Merci beaucoup !

J'ai encore un soucis mais je pense que c'est le même type d'erreur, je vais cherché ca de suite.

Par contre, tu me dis que ACCESS souligne en jaune les erreurs, oui c'est vrai, cependant je comprend pas pourquoi mais pour cette erreur le debogueur ne se lance meme pas ... C'est pourquoi je ne savais même pas d'ou venait l'erreur ...

Merci en tout cas ;)
0
blux Messages postés 27993 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
En principe, lorsqu'il se plante, tu dois avoir une boite de dialogue avec plusieurs boutons, dont un "débogage" qui t'ouvre la fenêtre de code...
0