Effectuer suppression champs dans BDD Access SQL avec VB

cs_ElChauve Messages postés 7 Date d'inscription samedi 10 novembre 2007 Statut Membre Dernière intervention 14 juin 2008 - 14 juin 2008 à 19:46
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 - 15 juin 2008 à 00:01
Bonjour,
Je développe un petit programme de location de matériel, et pour se faire il faudrait que je puisse supprimer la location créée dans ma BDD Access lors de la restitution de celui-ci.
Ma BDD se compose de 4 tables : CLIENTS(, Nom, Prenom ... ), PRODUITS(CodeCodeComm, CodeCli) et EMPRUNTER(CodeComm, CodeProd, QtéEmpr).

Voici le code de mon formulaire correspondant à la suppression de l'emprunt et de la réafectation des quantités de produits dans la BDD :

Private Sub btn_restituer_Click()

'Déclaration d'une variable cidecli ...
    Dim codecli As String
' ... permettant de récuperer le code du client sélectionné
    codecli = Right(Cmb_Clt, 5)
   
    MsgBox codecli
   
'Recherche des numéros de commandes passées par le client sélectionné
    Set Rs_Comm = New Recordset
    With Rs_Comm
        .ActiveConnection = Conn
        .Open "select * from COMMANDE", , adOpenDynamic, adLockPessimistic
       
        While Not Rs_Comm.EOF
            If codecli = Rs_Comm("Code_Cli") Then
                Dim codecomm As Integer
                codecomm = Rs_Comm("Code_Comm")
               
                MsgBox codecomm
               
            'Recherche des matériaux empruntés
                Set Rs_Empr = New Recordset
                With Rs_Empr
                    .ActiveConnection = Conn
                    .Open "select * from Emprunter", , adOpenDynamic, adLockPessimistic
                   
                    While Not Rs_Empr.EOF
                        If codecomm = Rs_Empr("Code_Comm") Then
                            Dim codeprod As String
                            codeprod = Rs_Empr("Code_Prod")
                           
                            MsgBox codeprod
                           
                        'Restitution des quantités empruntées du produit concerné
                            Dim qteempr As String
                            qteempr = Rs_Empr("Qte_Empr")
                           
                        'Mise à jour des quantités du stock dans la base Produits
                            Set Rs_Produits = New Recordset
                            With Rs_Produits
                                .ActiveConnection = Conn
                                .Open "select * from PRODUITS", , adOpenDynamic, adLockPessimistic
                       
                                While Not Rs_Produits.EOF
                                    If codeprod = Rs_Produits("Code_Prod") Then
                                        MsgBox Rs_Produits("Code_Prod")
                                        Rs_Produits("QteRes_Prod") = (Rs_Produits("QteRes_Prod") + qteempr)
                                        Rs_Produits("QteEmpr_Prod") = (Rs_Produits("QteEmpr_Prod") - qteempr)
                                        Rs_Produits.Update
                                    End If
                                    Rs_Produits.MoveNext
                                Wend
                            End With
                           
                        End If
                        Rs_Empr.MoveNext
                    Wend
                   ' Rs_Empr.Delete
                End With
               
            End If
            Rs_Comm.MoveNext
        Wend
       ' Rs_Comm.Delete
    End With
   
    btn_restituer.Enabled = False
   
'Ceci permet d'afficher seulement les boutons nécessaires
    If Lst_Prod.ListCount = 0 Then
        btn_ajout.Enabled = True
        btn_retirer.Enabled = True
        btn_valider.Enabled = True
    End If
   
End Sub

Comment supprimer les champs correspondant au code de la commande à restituer dans les tables EMPRUNTER et COMMANDE ??

Merci pour votre aide
A voir également:

1 réponse

LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
15 juin 2008 à 00:01
Salut,
à défaut de pouvoir répondre directement
à ta question (trop fatigué pour pouvoir suivre l' enchainement de ton code), je te conseille vivement de ne pas procèder par suppression mais par saisie de la quantité restituée sur la même commande.
Tu ajoutes un champ QteRend, valeur par defaut 0.
EMPRUNTER(CodeComm, CodeProd, QtéEmpr, QtéRend).
Ainsi QteEmpr - QteRend te donne ce qu' il reste encore chez le client.Et tant mieux s' il rend tout.

Autre raison pour ne pas supprimer, il faut toujours garder trace.Et pour cela tu dois aussi ajouter un champ DateCommande.

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
0
Rejoignez-nous