ACCESS LISTE ET VBA

ACCESS LISTE ET VBA - VB/VBA/VBS - Programmation

Marsh Posté le 13-07-2004 à 16:49:21    

Pour les pro du VBA et Access
 
J'ai 2 problemes :
 
le Premier

 
J'ai un formulaire qui supprime des armoires. La table armoire est
constituée de ces champs :
Num_armoire : Texte ex : A1, A2...
Pleine :booléen : représenté par un chackbox
Contient_elts :booléen représenté par un checkbox aussi.
 
Ce formulaire est consitué d'une liste qui contient les armoires
vides(contient_elts = false) et d'un bouton pour valider la suppression.
Le problème est que quand je selectionne l'armoire à supprimer et que je
valide avec le bouton il me supprime toujours le premier enregistrement dans
la liste et il me met #supprimé à la place(dans la liste).
 
Est ce que quelqu'un sait comment faire pour que lors de la valiation, c
l'enregistrement sélectionné qui s'efface et pas le premier dans la liste .
 
PS : J'ai utilisé les possibilités qu'offre access pour construire les
listes et les boutons de suppression, je n'ai pas utilisé de VB.
 
 
le Deuxieme
 
g un formulaire avec 2 champs:
 
numéro_boite
numéro de l'armoire contenant la boite
je veux qu'une fois que la boite est saisie, le numero de l'armoire
s'affiche automatiquement.
comment faire?
 
Je pense que c qqchose du genre :
 
Private Sub num_armoire_BeforeUpdate(Cancel As Integer)
Dim requete As String
requete = "Select num_armoire from boite where num_boite =
&[formulaire]![num_boite]![ce que j'ai saisi]& )"
 
/*mais il faut un truc pour dire: affecte le resultat de la requete dans la
zone du numéro de l'armoire*/
 
End Sub
 
Merci d'avance et n'hesitez pas à répondre (en indiquant le ou les problemes traitées ) c super urgent!!


---------------
voili voilou
Reply

Marsh Posté le 13-07-2004 à 16:49:21   

Reply

Marsh Posté le 13-07-2004 à 17:18:32    

Pour le 1/
Si j'imagine bien (faute de détails), ton formulaire est lié à ta table des Armoires et en plus tu as une liste déroulante basée sur cette même table (ok?).
Dans ce cas la sélection dans ta liste n'influe en rien la position sur l'enregistrement de la table liée au formulaire.
Utilise l'objet RecordsetClone de ton formulaire (et ses méthodes) pour te positionner et puis supprimer l'enregistrement (tu n'as pas précisé non plus quelle méthode tu utilises pour la suppression: DoCmd ?)
 
2/ trop peu de détails sur l'interface et la dépendance ou non de ton formulaire à une source de données (table, requete) pour pouvoir répondre.
 
 

Reply

Marsh Posté le 15-07-2004 à 14:27:40    

>Oui en effet le formulaire est lié à une table armoire.
 
 >j'utilise une requete select... pour remplir ma liste à partir de
la table armoire.
 
 >En fait pour la suppression j'utilise tout simplement un
bouton-->opération sur enregistrement -->supprimer un enregistrement et
Access génère le code derrière.
 
 >je ne vois pas pkoi se positionner sur l'enregistrement pour la
suppression alors que  le role de la clé(identifiant) justement est de
retrouver l'enregistrement.
 
 dans les propriétés du formulaire : je précise que le traitement
doit etre effectué sur l'enregistrement en cours(celui que je selectionne).
et je ne sais pas comment utiliser RecordsetClone, je sais que c'est pour
faire référence à un objet dans un formulaire, mais ici c'est un objet d'un
objet d'un formulaire : un enregistrement d'une liste dans un formulaire.
 
 est ce que tu pourrais me donner un exemple d'utilisation sur une
liste?
 Je te remercie d'avance.
 


---------------
voili voilou
Reply

Marsh Posté le 16-07-2004 à 13:16:57    

J'avais mal compris ton problème.
En fait, si mes souvenirs sont bons, l'enregistrement n'est supprimé que "logiquement" (d'où le #supprimé).
Il faut rafraichir le contenu de la liste pour qu'il n'en tienne plus compte.  
Une réaffectation de la source de données à la propriété adéquate (RowSource ?) suffit, ou l'appel de la méthode .Requery


Message édité par tegu le 16-07-2004 à 13:18:03
Reply

Marsh Posté le 16-07-2004 à 15:28:23    

en fait il n'est meme pas supprimé c'est le premier enregistrement de la
liste qui est supprimé.  
maintenant je n'ai plus #supprimé car je rafraichis la liste.j'utilise
Me.refresh
Mais comment faire pour supprimer le bon enregistrement? il faut un moyen
qui retrouve l'enregistrement selectionné dans la table armoire.  
Mais je ne le connais pas.
voici le code source du formulaire :comment integrer tous les traitements
SQL permettant de retrouver le bon enregistrement dans ce code?
 
Option Compare Database
Option Explicit
 
 
Private Sub Numero_BeforeUpdate(Cancel As Integer)
End Sub
 
Private Sub quitter_Click()
On Error GoTo Err_quitter_Click
    DoCmd.Close
 
Exit_quitter_Click:
    Exit Sub
 
Err_quitter_Click:
    MsgBox Err.Description
    Resume Exit_quitter_Click
     
End Sub
Private Sub supprimer_Click()
On Error GoTo Err_supprimer_Click
 
 
    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
    Me.Refresh
 
Exit_supprimer_Click:
    Exit Sub
 
Err_supprimer_Click:
    MsgBox Err.Description
    Resume Exit_supprimer_Click
     
End Sub
 
Merci d'avance

Reply

Marsh Posté le 21-07-2004 à 13:13:35    

personne peut me repondre ?

Reply

Sujets relatifs:

Leave a Replay

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