Access formulaires

bédé -  
Le Pingou Messages postés 12720 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
j'ai qq soucis avec les formulaires sous access sur une table "individus"
- je veux faire 2 formulaires identiques sauf que l'un est un formulaire de saisie où les champs sont vides, sur lequel je souhaite une vérification avant de valider l'ensemble des enregistrements pour éviter de créer plusieurs fois le même individu (nom, prénom,adresse identiques)
l'autre sera un formulaire de consultation pour visualiser les différents enregistrements sans pouvoir les modifier
enfin je cherche a faire un formulaire de recherche sur un ou plusieurs champs sur cette table.
comment je dois faire car le formulaire créé par défaut affiche tous les enregistrements et le modifie directement dans la table?

- autre souci: dans cette table, il arrive que des champs sont vides pour certains enregistrements. le formulaire que j'ai créé affiche la dernière valeur du champs même si le champs n'a pas été rempli pour l'enregistrement visualisé, d'où un mauvais renseignement à la consultation. Comment faire afficher une case vide quand le champ est vide?
merci

11 réponses

Le Pingou Messages postés 12720 Date d'inscription   Statut Contributeur Dernière intervention   1 468
 
Bonsoir,
Se sera plus compréhensible si vous mettez une copie de votre base sur www.cjoint.com vous la compressez en *.ZIP ou *.RAR et vous n'oubliez pas de poster le lien.
1
bédé
 
En gros, j'ai une table qui rassemble des infos sur des individus (nom prénom, adresse,etc).
Je souhaite utiliser des formulaires qui présenteront les champs de la table 'individus":

- pour créer un nouvel enregistrement dans la table: dans ce cas, les cases des champs doivent être vides au départ et je veux effectuer une vérification finale pour m'assurer que je ne crée pas plusieurs fois le même individu (je peux avoir plusieurs Dupont mais pas plusieurs Jean Dupont habitant Bordeaux, 5 rue de la paix, d'où la vérif sur l'ensemble des champs)

- pour consulter la table: les enregistrements sont alors visibles mais pas modifiables

- pour effectuer une recherche d'individu selon un ou plusieurs critères simultanément.

Je pense qu'il me faut pour cela créer 3 formulaires qui seront similaires dans leur présentation mais dont les propriétés seront différentes (droits d'écriture, par exemple).
Or je rame à trouver comment je dois procéder.
Ai-je été plus clair?
0
Le Pingou Messages postés 12720 Date d'inscription   Statut Contributeur Dernière intervention   1 468
 
Bonjour bédé,
et je veux effectuer une vérification finale pour m'assurer que je ne crée pas plusieurs fois le même individu
(je peux avoir plusieurs Dupont mais pas plusieurs Jean Dupont habitant Bordeaux, 5 rue de la paix, d'où la vérif sur l'ensemble des champs)

Pour éviter les doublons vous devez mettre une clé primaire sur les 2 champs de votre table ((nom prénom, adresse)

-pour créer un nouvel enregistrement dans la table: dans ce cas, les cases des champs doivent être vides au départ
Vous avez besoin d’un seul formulaire qui sert pour l’ajout, la modification, la suppression et la lecture. Il suffit lors de l’ouverture du formulaire de préciser se que vous voulez réaliser :
1.- pour nouvel enregistrement (ou ajout) : DoCmd.OpenForm "F_DebiteurDetail", , , , acFormAdd
2.- pour modifier, ajouter, supprimer : DoCmd.OpenForm "F_Encaissement", , , acFormEdit
3.- en lecture uniquement : DoCmd.OpenForm "F_Encaissement", , , acFormReadOnly

- pour effectuer une recherche d'individu selon un ou plusieurs critères simultanément.
Le plus pratique est de créer un formulaire de recherche multicritère, vous trouvez un super exemple sous se lien : https://cafeine.developpez.com/access/tutoriel/recherchemulti/
0
bédé
 
je ne vais pas créer un clé sur l'ensemble des champs (qui sont en réalité + de 3...) ????
ma clé primaire est sur le numéro d'index.
faut-il passer par une macro pour faire la vérif ? si oui, comment?
0

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

Posez votre question
Le Pingou Messages postés 12720 Date d'inscription   Statut Contributeur Dernière intervention   1 468
 
Bonjour,
J'ai supposé que vous avez le champ "nom prénom" et le champ "adresse" et si vous ne voulez pas 2 fois "Jean Dupont habitant Bordeaux, 5 rue de la paix" alors vous devez utiliser la clé primaire pour empêcher que la table enregistre un doublon. Procédure : ouvrir la table en mode création et mettre une clé primaire sur le champ "nom prénom" et aussi le champ "adresse". La clé sur l'index peut être enlevée sans autre (certainement mise par défaut par le système)
Cette manière ne nécessite aucune macro.
Note: qu'elles sont exactement les champs de votre table !
0
bédé
 
les champs sont:
n° index
nom
prenom
genre
code postal
ville
pays
adresse
tel
tel portable
email
pere
mere

je ne pense pas qu'il faut faire une clé primaire multiple (surtout que la table est liée avec d'autres tables par le numéro d'index)
mais je me trompe peut-être...
0
Le Pingou Messages postés 12720 Date d'inscription   Statut Contributeur Dernière intervention   1 468
 
Bonjour,
La structure de votre BD n’est pas connue, de ce fait le plus simple est de faire le contrôle de doublon avec la clé primaire.
Pour votre cas (selon votre liste et les « pas 2 fois "Jean Dupont habitant Bordeaux, 5 rue de la paix ») vous mettez une clé primaire composée sur les champs : nom, prénom, adresse et ville).

Les relations entre les tables dépendent du type de jointure que vous avez créé, avec ou sans clé primaire, donc pas de souci.

Il est aussi possible de faire se contrôle de doublon à l’aide d’une macro (quelque connaissance de VBA nécessaire).

Concernant les formulaires, je n’ai pas répondu de la bonne manière, voici la procédure à suivre :
Créer un formulaire d’accueil ou vous insérez les 4 contrôles « Bouton de commande » soit : Ajout, Modifier, Lecture et Recherche.

Chaque contrôle déclenche une procédure événementielle sur clic dont voici les 4 procédures :

Ajout :
Private Sub Commande0_Click()
DoCmd.OpenForm "NomFormulaire1", , , , acFormAdd
End Sub

Modifier :
Private Sub Commande1_Click()
DoCmd.OpenForm "NomFormulaire1", , , acFormEdit
End Sub

Lecture (uniquement)
Private Sub Commande2_Click()
DoCmd.OpenForm "NomFormulaire1", , , acFormReadOnly
End Sub

Recherche
Private Sub Commande3_Click()
DoCmd.OpenForm "Nom_Formulaire2", acNormal
End Sub


Bonne journée
0
Le Pingou Messages postés 12720 Date d'inscription   Statut Contributeur Dernière intervention   1 468
 
Bonjour,
Complément au poste précédent.

Interdire les doublons sur la combinaison de plusieurs champs par la création d’un index multichamp, comme suit :
Pour créer l'index :
1.- Afficher la table en mode création
2.- Menu Affichage >> Index
3.- Sélectionner dans la colonne "Nom du champ", tous les champs concernés en laissant vides les champs de la colonne "Nom de l'index", sauf le premier champ, celui où commence la liste car il faut y inscrire le nom de l'index multichamp.)
4.- définir la propriété unique del’index multichamp : à "oui"

Bonne journée
0
bédé
 
je croyais que pour faire une liaison ,il fallait utiliser une clé primaire sur l'une des tables....

sinon je dois reproduire les champs dans les tables jointes (au lieu du numéro d'index que j'avais mis en place) ? tables liées qui sont assez nombreuses et que je liais jusqu'à présent par des numéros d'index
0
Le Pingou Messages postés 12720 Date d'inscription   Statut Contributeur Dernière intervention   1 468
 
Bonjour,

Je n'ai pas votre BD sous les yeux et vos explications sont insuffisantes pour se faire une bonne image.

Si vous avez une structure complexe qui nécessite l'utilisation de la clé primaire, alors vous l'utilisez.

Concernant le doublon, je vous propose d'utiliser la procédure du poste 8.
0
Le Pingou Messages postés 12720 Date d'inscription   Statut Contributeur Dernière intervention   1 468
 
Bonjour bédé,
J'y pense à l'instant, par exemple, vous pouvez mettre une image de toutes les relations entre les tables sur www.cjoint.com
se serait très explicite pour la structure.
0